レビューが必要な基本的なサンプルがあります (C++)。
関数 PublicFunc() と、PrivateFunc() という別の関数があるとします。それらを慎重に同期させたいと思います。しかし、PrivateFunc は、PublicFunc を呼び出すこともあります。これは、同じスレッドから呼び出していることを意味します。これがブロックの原因で、解決したいです。
mutable boost::mutex m;
void PublicFunc() {
m.lock();
//Here it blocks, but why?
//What I need is to get the lock if this func was called from PrivateFunc(), so exactly from the same thread.
//But! It should definitely block on calling PublicFunc from outside while we are for example in the 'OtherPrivateFunc'.
//Do some stuff
//this is not necessary
m.unlock();
}
void PrivateFunc() {
m.lock();
PublicFunc();
OtherPrivateFunc();
m.unlock();
}
boost ライブラリのミューテックスまたはロックはどれですか? ありがとうございました!