Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

C++14 共有ロック

C++14 で共有ロックというものが実装された。
これは1つのリソースに対して、1つのスレッドが書き込みを行い、2つ以上のスレッドが同時に読み込みを行うケースで用いる。
2つの読み込みスレッドは一つのstd::shard_mutexに対して、lock_shared()(共有ロック)を呼び出すと読み込み中であることを宣言することにより、書き込みスレッドが呼び出すlock()(排他ロック)をブロックすることができる。
2つの読み込みスレッドのlock_shared()同士は互いにブロックすることはない。

書き込みスレッドが1つ、読み込みスレッドが1つの場合は利用することに意味はない。