私はBoostを使用し始めましたが、Win32のクリティカルセクションまたは.Netのlock
の動作を再現するコードを実装する方法を理解できません。Boostでクリティカルセクションを作成するにはどうすればよいですか?
共有フィールドへの書き込み操作を制御するために異なるスレッドから呼び出すことができるメソッドFoo
を書きたいと思います。同じスレッド内の再帰呼び出しを許可する必要があります(Foo() - > Foo())。 C#ので
この実装は非常に簡単です:あなたはブーストを使用することができますブースト
object _synch = new object();
void Foo()
{
lock (_synch) // one thread can't be lock by him self, but another threads must wait untill
{
// do some works
if (...)
{
Foo();
}
}
}
あなたのお勧めは非常に便利です。私はエラーを修正しましたが、パフォーマンスの抑制があります! 3回以上! =((修正前はunique_lockを使用しました) –
Vie
共有リソースを使用している場所でコードサンプルを提供できますか?http://home.roadrunner.com/~hinnant/mutexes/locking.html#Sharedもチェックしてください。 –
再帰的なロックを避けるようにしてください。ガードを外側のスコープに移動してもかまいません。再帰的なmutexは単純なものよりも遅くなる可能性があります。 – blaze