同期データ構造メモ critical_section,reader_writer_lock,event

Visual C++ 2010から追加された 同時実行ランタイムに含まれる。
複数のスレッドから共有データへのアクセス及び実行フローを同期するためのデータ構造

  • Concurrency::critical_sectionクラス
  • クリティカルセクション
    既にlock済みの場合はunlockされるまでブロックされる。

  • Concurrency::reader_writer_lockクラス
  •  lock_read():
      読み込み専用、すべてのlockがunlockされるまで待機する。
      lockされていなければそのまま実行(同時実行可能)。
     lock():
      書き込み用、 lock_readより優先される。

  • Concurrency::critical_section::scoped_lockクラス
  • Concurrency::reader_writer_lock::scoped_lockクラス
  • Concurrency::reader_writer_lock::scoped_lock_readクラス
  •  コンストラクタの引数にそれぞれ対応するlockオブジェクトを うけとり、
     コンストラクタでlock( or lock_read)、デストラクタでunlockを実行する。
     lockしたいスコープの先頭でこのオブジェクトを作成することで、
     例外安全にlock,unlockを実行できる。

  • Concurrency::eventクラス
  • イベントがシグナル状態または非シグナルできる同期オブジェクトを表す。
    共有データへのアクセスの保護を目的とするcritical_section,reader_writer_lockと異なり、
    実行フローを同期する。

     set():
      イベントをシグナル状態に設定する
     reset()
      イベントを非シグナル状態に設定する
     wait:():
      イベントがシグナル状態になるのを待機します。
     wait_for_multiple():
      複数のイベントがシグナル状態になるのを待機します。

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: C++, 同時実行ランタイム, 同期データ構造 タグ: , , , , , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中