Gas*_*ton 14 c++ linux gcc thread-safety
不久,我将开始使用共享内存开发并行版本的网格细化算法.
该大学的一位教授指出,我们必须非常小心线程安全,因为编译器和stl都不是线程感知的.
我搜索了这个问题,答案取决于编译器(有些尝试有点线程感知)和平台(如果编译器使用的系统调用是否是线程安全的).
那么,在linux中,gcc 4编译器为new运算符生成线程安全的代码?
如果没有,解决这个问题的最佳方法是什么?也许锁定每个呼叫到新的运营商?
通常,new
运算符是线程安全的 - 但是对于调用STL和标准库的线程安全保证是由标准控制的 - 这并不意味着它们是线程不知道的 - 它们往往具有非常明确的线程安全保证操作.例如,以只读方式遍历列表对于多个读者来说是线程安全的,而迭代列表并进行更新则不是.你必须阅读文档,看看各种保证是什么,虽然它们并不繁琐,但它们往往有意义.