condvar fixes

This commit is contained in:
2022-11-10 14:11:40 +03:00
parent 15a9d68a87
commit 4994d0bf66
3 changed files with 15 additions and 7 deletions

View File

@@ -839,7 +839,7 @@ PIObject::Deleter::Deleter() {
PRIVATE->thread.setSlot([this](){
PIVector<PIObject*> oq;
PRIVATE->thread.lock();
PRIVATE->cond_var.wait(PRIVATE->thread.mutex());
if (PRIVATE->obj_queue.isEmpty()) PRIVATE->cond_var.wait(PRIVATE->thread.mutex());
oq.swap(PRIVATE->obj_queue);
PRIVATE->thread.unlock();
for (PIObject * o : oq) deleteObject(o);
@@ -851,9 +851,7 @@ PIObject::Deleter::Deleter() {
PIObject::Deleter::~Deleter() {
//piCout << "~Deleter ...";
PRIVATE->thread.stop();
PRIVATE->thread.mutex().lock();
PRIVATE->cond_var.notifyAll();
PRIVATE->thread.mutex().unlock();
PRIVATE->thread.waitForFinish();
for (PIObject * o : PRIVATE->obj_queue) deleteObject(o);
//piCout << "~Deleter ok";