我在我的代码中大量使用了<thread> <atomic> <mutex>
等,其中包括几个无锁算法。我的目标(最终)是一个Linux环境。我一直在用Visual Studio 2011 Beta进行开发,虽然在其他C++ 11功能中缺少可怕的东西,但似乎是实现并发功能的唯一工具链。并行C++ 11 - 可以使用哪些工具链?
见C++ 11的支持位置:
现在,如果别人根本没有包含C++ 11并发提供图书馆,我可以轻松地使用just::thread,但是clang和gcc都对C++ 11内存模型回答“no”,至少visual C++似乎支持这个模型。我不确定这会产生什么样的影响 - 可能会优化掉显然无副作用的代码以及其他错误的东西。
如果现在我完全避免优化构建,并且仅编译调试构建而未启用优化 - 使用Clang或GCC工具链是否合理?
我的猜测是,如果你使用'just :: thread',它会正常工作。它使用原生的(Posix或Win32)原语来强制排序等事情,所以我认为编译器通常会因为失败而被严重破坏。 – 2012-04-07 15:51:49
你应该在你的列表中包含一个多线程相关标签,Anthony Williams经常在这里出现,所以如果你足够幸运,他会注意到。我认为他创建了'just :: thread',以便它是跨平台的,所以我不会期望任何问题。 – 2012-04-07 17:13:30