std::once_flag 的设计初衷是确保某个操作只执行一次,并且在执行后保持这个状态,以避免重复执行。因此,它并没有提供重置功能。如果提供了重置功能,那么它就不再是一个可靠的“只执行一次”的同步机制了。 3. 一种可能的替代方案来实现类似的重置功能 如果你需要在某些情况下“重置”并重新执行某个操作,你可以考虑...
异常处理:如果在 call_once 调用的函数中抛出异常,once_flag 会被重置,允许再次尝试初始化。 不可重入:一旦初始化完成,后续的 call_once 调用将不会执行关联的函数。 生命周期管理:确保 once_flag 的生命周期覆盖所有可能的 call_once 调用。 C++17 中std::call_once的改进 C++17 引入了 std::call_once 的...
std::call_once调用的可调用函数如果试图在同一个std::once_flag上调用std::call_once,它将挂起。一...