C++14標準ライブラリのshared_timed_mutex
クラス*1は、少なくとも10000スレッド以上のReaderスレッドからの共有ロック(shared lock)同時獲得をサポートする。また同時獲得可能な共有ロック数上限を超えた場合も、共有ロック獲得できるまでReaderスレッドがブロックされると保証する。*2
C++14 30.4.1.4/p2より引用(下線部は強調)。
In addition to the exclusive lock ownership mode specified in 30.4.1.2, shared mutex types provide a shared lock ownership mode. Multiple execution agents can simultaneously hold a shared lock ownership of a shared mutex type. But no execution agent shall hold a shared lock while another execution agent holds an exclusive lock on the same shared mutex type, and vice-versa. The maximum number of execution agents which can share a shared lock on a single shared mutex type is unspecified, but shall be at least 10000. If more than the maximum number of execution agents attempt to obtain a shared lock, the excess execution agents shall block until the number of shared locks are reduced below the maximum amount by other execution agents releasing their shared lock.
おまけ:自作のMutexコレクションでは、C++11環境向けのshared_(timed_)mutex
プリミティブを実装している。Boost.Threadライブラリではshared_mutex
や、より高機能なupgrade_mutex
を提供する。
関連URL