有原子|=
或和原子或这样的东西吗?如果没有,建议在需要线程安全的变量中设置位的技术是什么?(我正在避免锁定)
C++03中没有这样的东西,但您可以使用供应商特定的功能。例如,您可以在窗口上使用InterlockedOr
。在C++0x中,您可以使用atomic_fetch_or
。
请注意,原子操作也需要锁定,尽管它在硬件级别上仍然很昂贵。
您可以使用原子比较和交换(CAS),它可以在您可能需要的任何地方使用,以生成几乎任何操作的原子版本。
看一下_InterlockedOr
的内在特性。这是你能达到的最快速度。
在当前的C++标准中没有这样的想法,但在C++11中会有,它可能会在秋季发布。请参阅:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1401.pdf
我不确定是否已经有编译器支持即将推出的C++标准的部分新线程功能。否则,您将需要进行变通(例如使用Boost)。