C++std::atomic与pthreads兼容吗



我有两个pthread线程,其中一个正在写入bool值,另一个正在读取它。我不喜欢便携性。其x86架构。我唯一关心的是编写线程,将bool设置为true,并开始自己的工作(每天午夜发生一次(关闭文件。另一个线程将bool读取为false,并同时继续其工作(写入文件(。很难重现这个场景,所以我最好得到最好的理论解决方案。

在pthreads的情况下,我可以使用std::atomic吗?

在pthreads的情况下,我可以使用std::atomic吗?

是的,这就是std::atomic的含义

它与std::thread、POSIX线程以及任何其他类型的线程一起工作。在幕后,它使用";神奇的";防止某些线程不兼容优化的编译器注释,以及确保生成线程安全代码的处理器特定锁定指令1

在没有线程的情况下使用std::atomic(对于信号处理程序,可以使用std::atomic而不是volatile,但这样做没有任何好处(。

唯一与我有关的。。。

你剩下的问题对我来说毫无意义。


1正确使用,这通常是一件不平凡的事情,这就是为什么通常应该尝试而不是使用std::atomic,除非您是专家。

最新更新