Visual C++ 2010から追加された 同時実行ランタイムに含まれる。
複数のスレッドから共有データへのアクセス及び実行フローを同期するためのデータ構造
- Concurrency::critical_sectionクラス
- Concurrency::reader_writer_lockクラス
- Concurrency::critical_section::scoped_lockクラス
- Concurrency::reader_writer_lock::scoped_lockクラス
- Concurrency::reader_writer_lock::scoped_lock_readクラス
- Concurrency::eventクラス
クリティカルセクション
既にlock済みの場合はunlockされるまでブロックされる。
lock_read():
読み込み専用、すべてのlockがunlockされるまで待機する。
lockされていなければそのまま実行(同時実行可能)。
lock():
書き込み用、 lock_readより優先される。
コンストラクタの引数にそれぞれ対応するlockオブジェクトを うけとり、
コンストラクタでlock( or lock_read)、デストラクタでunlockを実行する。
lockしたいスコープの先頭でこのオブジェクトを作成することで、
例外安全にlock,unlockを実行できる。
イベントがシグナル状態または非シグナルできる同期オブジェクトを表す。
共有データへのアクセスの保護を目的とするcritical_section,reader_writer_lockと異なり、
実行フローを同期する。
set():
イベントをシグナル状態に設定する
reset()
イベントを非シグナル状態に設定する
wait:():
イベントがシグナル状態になるのを待機します。
wait_for_multiple():
複数のイベントがシグナル状態になるのを待機します。