wait()
のメソッドは、単純ではなくオブジェクトをパラメーターとしてboost::conditiona_variable
必要とするのはなぜですか?boost::unique_lock
boost::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()
そのようなオブジェクトの目的と、それらが大きなオーバーヘッドをもたらすかどうかについて教えてください。
ありがとう!
(私の質問はこの質問と重複しているようですが、私の懸念は目的よりもオーバーヘッドです...)