2012-04-29 18 views
0

スレッドバリアを使用してスレッドの束を同期しようとしています。私はBoost :: barrierを使ってそれをやろうとしましたが、いくつかのリンクの問題に遭遇しました:Compiling Bullet physics and Boost together as static librariesWin32 APIのみを使用するスレッドバリアクラス

解決には時間がかかるかもしれませんが、私は自分自身のスレッドバリアクラスを進めることに決めました。障壁機構は、リアルタイムシミュレータに使用するため、低レイテンシである必要があります。私はここにいくつかのオプションを見てきました:

Writing a (spinning) thread barrier using c++11 atomics

を、それは私は、Visual Studioで十分に成熟していないと思うC++アトミック2010を使用していますしかし、私は唯一のWin32 APIを使用して一緒に自分のスレッドのバリアクラスを引くしようとしていますし、私はこれを見ていた。誰もがより良い提案を持っている場合、私は思っていた

http://adilevin.wordpress.com/category/multithreading/

。むしろ外部ライブラリの依存関係を持たず、C++とwin32 APIのみを使用したいと思います。あなたがあなただけのWin32アトミック使用して、独自の原子<>テンプレートをロールバックすることができます(そして、あなたがしているようだ)ストレートのWin32 APIを使用して大丈夫なら

+0

どのようにすればよいですか?私は、リンクされた連動/セマフォーソリューションソリューションを見て、それはOKと思われる。あなたは何が必要ですか? –

+0

C++アトミックを使用しない場合と同様に優れています。最終的に私はスレッドとしてWindows Interlocked APIを使用しました。今のところこのクラスはWin32のみに必要です。 –

+0

Windows 8には、必要なことをする同期障壁が導入されています - http://msdn.microsoft.com/en-us/library/windows/desktop/hh706890(v=vs.85).aspx以前の:( – quixver

答えて

1

InterlockedExchange InterlockedCompareExchange などを...

IDEのアトミック(Visual Studio 2011?)のサポートが優れている場合は、標準ライブラリのテンプレートを自分のものと入れ替えることができます。

+0

ちょうど8時間後に1つ巻きました:P、ここにあります:http://code.google.com/p/surface-physics/source/browse/trunk/BumpThreaded/ThreadTests/Barrier.h、aテストアプリケーションはこちら:http://code.google.com/p/surface-physics/source/browse/trunk/Repertoire/Multithreading/ThreadingUnitTest.cpp –

関連する問題