目次 - API(機能別) - アトミック操作 - SDL_MemoryBarrierReleaseFunction

SDL_MemoryBarrierReleaseFunction

メモリバリアは, マルチコアCPUでコンパイラによって読み込みと書き込みの順序が変えられ, 順不同に見えるのを防ぐために存在する

構文

void SDL_MemoryBarrierReleaseFunction(void)

詳細

典型的な例は, スレッドAでデータを書き込みフラグを設定し, スレッドBでフラグを獲得しデータを読み込む場合である. このとき, データの書き込みとフラグの設定の間にバリアのreleaseを挿入し, データの書き込みが完了すると即座にフラグが設定されることを保障して, さらに, フラグの獲得とデータの読み込みの間にバリアのacquireを挿入し, フラグに関する全ての読み込みが完了したことを確認するようにする.

この場合は, バリアのreleaseとバリアのacquireが常にペアになっていて, 1つのフラグ変数でデータの読み込み/書き込みを制御する必要がある.

これらの理論のさらなる情報は, 次のblog記事を参照すること: http://preshing.com/20120913/acquire-and-release-semantics

バージョン

SDL 2.0.6以降

SDL Wikiへのリンク

SDL_MemoryBarrierReleaseFunction - SDL Wiki