2016-04-01 14 views
0

"MThread"と呼ばれるスレッドが1つあり、 "HThread_01" ... 20 "HThread_20"というスレッドがあります。私は以下のプロパティを持つmutex mに似たものを探しています:非対称ミューテックスの概念

"MThread"からm.lock()が呼び出された場合、20個の "HThreads"がブロックされます。 m.lockは()のみ「MThread」がブロックされる20「HThreads」のいずれかではなく、他の「HThreads」から呼び出された場合

これを可能にするC++(ブーストではない)の軽量コンセプトはありますか?どうもありがとうございました。

+1

私はあなたがシングルライターのマルチリーダーミューテックスに似た何かを探していると思います。残念なことに私があまりにも慣れていないので、残念なことに1つを指すことはできません – vu1p3n0x

+3

'std :: shared_mutex'を使うことができます。 – vu1p3n0x

答えて

3

std::shared_mutexはあなたの用途に合っているようです。 shared_mutexは、排他ロックと共有ロックの両方を提供します。

std::shared_mutex mut; 

MThreadでは、排他的アクセスもMThread_01 ... MThread_20共有アクセスを得るためにmut.lock_shared()を使用するには

を得るためにmut.lock()を使用します。

+3

注意:shared_mutexはC++ 17(提案)です。 C++ 14からstd :: shared_timed_mutex http://en.cppreference.com/w/cpp/thread/shared_timed_mutex –

+0

ありがとう、私が探していたものでした! – user3049681