我正在尝试使用线程障碍同步一堆线程。我尝试使用Boost :: barrier来做到这一点,但我遇到了一些链接问题:Compiling Bullet physics and Boost together as static libraries
因此虽然可能需要一些时间才能解决问题,但我决定继续使用自己的线程障碍类。屏障机制需要低延迟,因为我将它用于实时模拟器。我在这里看了一些选项:
Writing a (spinning) thread barrier using c++11 atomics
然而,它使用C ++原子,我认为在Visual Studio 2010中还不够成熟。我试图仅使用win32 API将我自己的线程障碍类拉到一起,我正在看这个:
http://adilevin.wordpress.com/category/multithreading/
我想知道是否有人有更好的建议。我宁愿没有外部库依赖,现在只使用C ++和win32 api。
答案 0 :(得分:1)
如果您可以使用直接的Win32 API(现在看来是这样),那么您可以滚动自己的原子<>使用Win32原子的模板:
InterlockedExchange InterlockedCompareExchange 等...
那么当您在IDE(Visual Studio 2011?)中更好地支持原子时,您可以将自己的模板换成标准库中的模板。