Add isQueueEmpty() to ThreadPool
This commit is contained in:
parent
13152d1c22
commit
16f410c8ef
3 changed files with 17 additions and 12 deletions
|
@ -694,7 +694,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -957,7 +957,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
|
@ -1036,7 +1036,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
|
|
||||||
return matchingV;
|
return matchingV;
|
||||||
|
@ -1415,7 +1415,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
|
|
||||||
// call functions on matching entities
|
// call functions on matching entities
|
||||||
|
@ -1477,7 +1477,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1608,7 +1608,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
|
|
||||||
// call functions on matching entities
|
// call functions on matching entities
|
||||||
|
@ -1675,7 +1675,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1739,7 +1739,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1819,7 +1819,7 @@ namespace EC
|
||||||
threadPool.wakeThreads();
|
threadPool.wakeThreads();
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
std::this_thread::sleep_for(std::chrono::microseconds(200));
|
||||||
} while(!threadPool.isAllThreadsWaiting());
|
} while(!threadPool.isQueueEmpty() && !threadPool.isAllThreadsWaiting());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -104,6 +104,11 @@ public:
|
||||||
return waitCount == THREADCOUNT::value;
|
return waitCount == THREADCOUNT::value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isQueueEmpty() {
|
||||||
|
std::lock_guard<std::mutex> lock(queueMutex);
|
||||||
|
return fnQueue.empty();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::thread> threads;
|
std::vector<std::thread> threads;
|
||||||
std::atomic_bool isAlive;
|
std::atomic_bool isAlive;
|
||||||
|
|
|
@ -24,7 +24,7 @@ TEST(ECThreadPool, Simple) {
|
||||||
|
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
} while(!p.isAllThreadsWaiting());
|
} while(!p.isQueueEmpty() && !p.isAllThreadsWaiting());
|
||||||
|
|
||||||
ASSERT_EQ(data.load(), 1);
|
ASSERT_EQ(data.load(), 1);
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ TEST(ECThreadPool, Simple) {
|
||||||
|
|
||||||
do {
|
do {
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
} while(!p.isAllThreadsWaiting());
|
} while(!p.isQueueEmpty() && !p.isAllThreadsWaiting());
|
||||||
|
|
||||||
ASSERT_EQ(data.load(), 11);
|
ASSERT_EQ(data.load(), 11);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue