仅使用Win32 API的线程屏障类

时间:2012-04-29 02:22:56

标签: c++ multithreading visual-studio

我正在尝试使用线程障碍同步一堆线程。我尝试使用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。

1 个答案:

答案 0 :(得分:1)

如果您可以使用直接的Win32 API(现在看来是这样),那么您可以滚动自己的原子<>使用Win32原子的模板:

InterlockedExchange InterlockedCompareExchange 等...

那么当您在IDE(Visual Studio 2011?)中更好地支持原子时,您可以将自己的模板换成标准库中的模板。