condvar fixes
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -278,9 +278,7 @@ bool _PITimerImp_Thread::startTimer(double interval_ms) {
|
||||
|
||||
bool _PITimerImp_Thread::stopTimer(bool wait) {
|
||||
thread_.stop();
|
||||
thread_.mutex().lock();
|
||||
event.notifyAll();
|
||||
thread_.mutex().unlock();
|
||||
if (wait) return thread_.waitForFinish();
|
||||
// if (wait)
|
||||
// if (!thread_.waitForFinish(10))
|
||||
|
||||
Reference in New Issue
Block a user