wait()のメソッドは、単純ではなくオブジェクトをパラメーターとしてboost::conditiona_variable必要とするのはなぜですか?boost::unique_lockboost::mutex
実際のところ、unique_lock の目的はまったく明確ではありません。の周りに別のラッパー オブジェクトを作成する必要があるのはなぜboost::mutexですか? また、パフォーマンスにどのような影響がありますか?
たとえば、2 つのスレッドがあるthread1としthread2ます。
の上thread1
void process() {
while(true){
while (objectToProcess == NULL) {
boost::unique_lock lock(mutex);
waitingVariable.wait(lock);
}
doSomething(objToProcess);
objToProcess = NULL;
waitingVariable.notify();
}
}
オンthread2:
void feedProcessor() {
while(true) {
while (objectToProcess != NULL) {
boost::unique_lock lock(mutex);
waitingVariable.wait(lock);
}
objToProcess = createNewObjectToProcess();
waitingVariable.notify();
}
}
この場合、条件変数unique_lockのメソッドを呼び出す必要があるたびに新しいオブジェクトを作成するのは無駄だと思います。wait()そのようなオブジェクトの目的と、それらが大きなオーバーヘッドをもたらすかどうかについて教えてください。
ありがとう!
(私の質問はこの質問と重複しているようですが、私の懸念は目的よりもオーバーヘッドです...)