目标:明白锁竞争的后果、工作窃取算法的核心思想
我们回头审视一下线程池构造函数的死循环部分:
for(;;) {
std::function<void()>task;
{
std::unique_lock<std::mutex>lock(this->queue_mutex);
this->condition.wait(lock,
[this](){return this->stop || !this->tasks.empty();});
if (this->stop && this->tasks.empty()) {
return;
}
task=std::move(this->tasks.front());
this->tasks.pop();
}
task();
}
创建线程池后,线程池中的线程开始竞争唯一的锁queue_mutex(unique_lock构造函数

最低0.47元/天 解锁文章
990

被折叠的 条评论
为什么被折叠?



