mirror of https://github.com/PentHertz/srsLTE.git
fix tear-down of worker
This commit is contained in:
parent
6db0e474be
commit
d73965e887
|
@ -19,9 +19,10 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "srslte/common/thread_pool.h"
|
#include "srslte/common/thread_pool.h"
|
||||||
|
#include <assert.h>
|
||||||
|
#include <chrono>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
#define debug_thread(fmt, ...) do { if(DEBUG) printf(fmt, __VA_ARGS__); } while(0)
|
#define debug_thread(fmt, ...) do { if(DEBUG) printf(fmt, __VA_ARGS__); } while(0)
|
||||||
|
@ -311,7 +312,6 @@ void task_thread_pool::stop()
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(queue_mutex);
|
std::unique_lock<std::mutex> lock(queue_mutex);
|
||||||
running = false;
|
running = false;
|
||||||
do {
|
|
||||||
nof_workers_running = 0;
|
nof_workers_running = 0;
|
||||||
// next worker that is still running
|
// next worker that is still running
|
||||||
for (worker_t& w : workers) {
|
for (worker_t& w : workers) {
|
||||||
|
@ -323,9 +323,10 @@ void task_thread_pool::stop()
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
cv_empty.notify_all();
|
cv_empty.notify_all();
|
||||||
lock.lock();
|
lock.lock();
|
||||||
|
while (nof_workers_running > 0) {
|
||||||
cv_exit.wait(lock);
|
cv_exit.wait(lock);
|
||||||
}
|
}
|
||||||
} while (nof_workers_running > 0);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void task_thread_pool::push_task(const task_t& task)
|
void task_thread_pool::push_task(const task_t& task)
|
||||||
|
|
Loading…
Reference in New Issue