作者:sherklock | 来源:互联网 | 2022-11-26 12:05
如何解决《std::atomic_bool用于取消标志:是std::memory_order_relaxed正确的内存顺序?》经验,应该怎么弄,您有好建议吗?
我有一个从套接字读取并生成数据的线程.每次操作后,线程都会检查一个std::atomic_bool
标志,看它是否必须提前退出.
为了取消操作,我将取消标志设置为true
,然后调用join()
工作线程对象.
线程代码和取消函数看起来像这样:
std::thread work_thread;
std::atomic_bool cancel_requested{false};
void thread_func()
{
while(! cancel_requested.load(std::memory_order_relaxed))
process_next_element();
}
void cancel()
{
cancel_requested.store(true, std::memory_order_relaxed);
work_thread.join();
}
是std::memory_order_relaxed
此,将原子变量的正确的内存顺序?