私はC++を使用しており、Boostライブラリのmutex、recursive_mutex、およびその他の同期オブジェクトを使用しています。
私はしばしば次のパターンを持っています:
- void RebuildAll()。この関数は多くの内部変更を行います。
- DoSomethingA()を無効にします。RebuildAllが構築したものを使用していくつかの作業を行います。
- void DoSomethingB()。RebuildAllが構築したものを使用していくつかの作業を行います。
- DoSomethingC()を無効にします。RebuildAllが構築したものを使用していくつかの作業を行います。
- ..。
関数は、さまざまなスレッドから呼び出すことができます。DoSomethingA()、DoSomethingB()、DoSomethingC()を並行して実行できるようにしたい。ただし、RebuildAll()を呼び出すときは、DoSomething関数が実行されていないことを確認する必要があります。
これらの機能を保護するのに役立つものはありますか?