我有两个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
,除非您是专家。