旧 C++ 编译器中的防护
Fencing in old C++ compilers
我有一个需要在 gcc 4.4 上编译的多线程应用程序,我不允许使用 c++0x 标志。
我希望变量以原子方式运行,但不幸的是 w/o 我无法在 C++ 中使用 atomic<T>
C++0x 标志。
我试过 boost::atomic
但它给我一个错误
ISO C++ forbids declaration of "atomic" with no type
在这些条件下是否有任何其他方法可以实现原子性,我可以使用 fencing - 如果是,那么是否有指南或常用命令来在旧 C++ 中实现 fencing。
正如 Sam Varshavchik 在上面的评论中所建议的那样,使用 POSIX std::mutex 我们可以保护多线程应用程序中的变量。
std::mutex 有点矫枉过正,但它是我们拥有的 gcc 4.4 中最好的。
C++11 atomic 在解决这个问题上做得更好,但只适用于较新的编译器。
我有一个需要在 gcc 4.4 上编译的多线程应用程序,我不允许使用 c++0x 标志。
我希望变量以原子方式运行,但不幸的是 w/o 我无法在 C++ 中使用 atomic<T>
C++0x 标志。
我试过 boost::atomic
但它给我一个错误
ISO C++ forbids declaration of "atomic" with no type
在这些条件下是否有任何其他方法可以实现原子性,我可以使用 fencing - 如果是,那么是否有指南或常用命令来在旧 C++ 中实现 fencing。
正如 Sam Varshavchik 在上面的评论中所建议的那样,使用 POSIX std::mutex 我们可以保护多线程应用程序中的变量。
std::mutex 有点矫枉过正,但它是我们拥有的 gcc 4.4 中最好的。
C++11 atomic 在解决这个问题上做得更好,但只适用于较新的编译器。