目录
这两个几乎是一样的
void addTask(Task task)
{
TaskList.emplace_back(task);
// ii = 1;
// con.notify_one();
::sem_post(&taskSem);
}
void runTask()
{
// unique_lock<mutex> lock(mut);
// while( ii == 0) con.wait(lock);
::sem_wait(&taskSem);
auto task = TaskList.front();
TaskList.pop_back();
task();
}
区别
sem简单
C++条件变量增加了一些判断 并且wait()一定要配合unique_lock<mutex> lock(mut)使用;
而不能是lock_guard<>;
这篇博客探讨了信号量(semaphore)与C++条件变量(condition variable)在同步机制中的应用。作者指出,信号量操作更简单,而C++条件变量增加了额外的判断,并需要配合`unique_lock`使用。文章通过示例代码展示了两者的用法差异,强调了在不同场景下选择合适同步原语的重要性。
8530

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



