我在代码中大量使用<thread> <atomic> <mutex>
等,其中包括几个无锁算法。我的目标是(最终) linux环境。我一直在使用VisualStudio2011Beta进行开发,虽然它在其他C++11特性中非常缺乏,但它似乎是实现并发特性的唯一工具链。
请参见这里的c++ 11支持:
现在,如果其他人只是缺少一个包含c++11并发特性的库,那么我可以很容易地使用只是:线程,但是clang和gcc对c++11内存模型的回答是“不”,至少视觉c++似乎支持这个模型。我不太确定这会产生什么效果--可能是优化了明显的副作用--免费代码,以及其他错误的东西。
如果现在我完全避免优化构建,只编译未启用优化的调试构建--使用Clang或GCC工具链是否合理?
发布于 2012-04-08 09:05:07
GCC 4.7地位 C++内存模型工作正在进行中,计划在下一个GCC版本中完成。GCC 4.7现在已经被释放了,所以这就是你可以期待的。
LLVM中的支持似乎更进一步:http://llvm.org/releases/3.0/docs/Atomics.html
不过,很难知道这在何种程度上被实际用于clang。<atomic>
似乎基本上适用于某些类型。我得到了其他类型的编译器断言,表示原子类型是意外的,这给它所使用的类型提供了一点信心。
发布于 2012-04-07 18:36:37
我在64位linux和windows上成功地使用了gcc-4.7 .std::thread
等在linux上工作得很好,即使是gcc-4.6。
在windows 4.7 (mingw64)上有一些小问题,内存泄漏与std::condition_variable
AFAIR的析构函数有关.
https://stackoverflow.com/questions/10055820
复制相似问题