【发布时间】:2012-05-09 07:08:53
【问题描述】:
我正在尝试使用线程屏障同步一堆线程。我尝试使用 Boost::barrier 来执行此操作,但遇到了一些链接问题:Compiling Bullet physics and Boost together as static libraries
因此,虽然解决它可能需要一些时间,但我决定继续使用我自己的线程屏障类。屏障机制需要低延迟,因为我将它用于实时模拟器。我在这里查看了一些选项:
Writing a (spinning) thread barrier using c++11 atomics
但是它使用了我认为在 Visual Studio 2010 中还不够成熟的 C++ 原子。我正在尝试仅使用 win32 API 将我自己的线程屏障类组合在一起,我正在研究这个:
http://adilevin.wordpress.com/category/multithreading/
我想知道是否有人有更好的建议。我宁愿没有外部库依赖,现在只使用 C++ 和 win32 api。
【问题讨论】:
-
如何更好?我查看了链接的互锁/信号量解决方案,似乎没问题。你需要什么?
-
不如不使用 C++ 原子。最终我为线程使用了 Windows Interlocked API,因为我现在只需要这个类用于 Win32。
-
Windows 8 引入了同步屏障,可以满足您的需求 - msdn.microsoft.com/en-us/library/windows/desktop/… 然而 - 不喜欢 Windows 7 或更早版本:(
标签: c++ multithreading visual-studio