多线程编程中使用的同步原语,用于等待条件为真。
“std::atomic<>”对于“std::condition_variable”来说是必要的还是过度的?
假设有一个简单的缓冲区,用作生产者线程和消费者线程之间某些数据的传输点。通过阅读周围的内容,我整理了以下内容: 常量 std::chrono::
不久前,我正在考虑如何相互实现各种同步原语。例如,在 pthread 中,您可以获得互斥体和条件变量,并且从中可以...
谓词 lambda 上的 `std::move` 是什么意思?
我正在阅读https://en.cppreference.com/w/cpp/thread/condition_variable/wait_for,其中有一行: 返回 wait_until(lock, std::chrono::steady_clock::now() + rel_time, std::move(
使用条件变量从多个生产者线程向消费者线程发出信号的最有效方法
我有 N 个工作线程,它们执行另一个消费者线程正在等待的计算。 我用一个条件变量(CV)和一个从 N 开始的原子计数器来做到这一点,每个工人法令......
C++ condition_variable 为什么需要锁?
在 std::condition_variable 的参考文档中有以下示例: #包括 #包括 #包括 #包括 #包括...
我正在阅读一些考试代码,它是这样的: sem_t s; int main(int argc ,char *argv[]) { thread_t p1、p2、p3; sem_init(&s,X,X) thread_create(&p1,子级);
std::atomic<bool>::wait 与 std::condition_variable::wait
我有一个单一生产者、单一消费者的用例,其中消费者会阻塞,直到生产者提供新数据为止。 以下是实现此目的的两种同步方法: 新 C++20
std::atomic 和 std::condition_variable wait、notify_* 方法之间的区别
我正在浏览“原子操作库”,发现了原子“wait”和“notify_”方法的 C++20 新功能。我很好奇 std::
通知条件变量是否可以保证唤醒具有成功条件/谓词(如果存在)的线程?
我在cppreference上找到的信息在这方面很模糊,所以我在这里询问。假设我有两个线程正在等待一个条件,其中一个具有 true 谓词,另一个具有 false 谓词(例如
C:为什么调用 pthread_cond_signal 会挂起?
我有以下代码片段。请注意,我有多个生产者和只有一个消费者。 pthread_mutex_t 互斥体; pthread_cond_t 简历; // 生产者线程 if (pthread_mutex_lock(&mutex) != 0) { ...
为什么在条件变量中使用while控制而不是if控制来同步不同线程?
我有简单的生产者、消费者问题。当生产者线程向全局货币变量添加 10$ 时,消费者线程将花钱。但有一个条件,钱不能低于0。 e...
pthread_cond_wait()和pthread_cond_signal()的理解
一般来说,pthread_cond_wait() 和 pthread_cond_signal() 的调用如下: //线程1: pthread_mutex_lock(&mutex); pthread_cond_wait(&cond, &mutex); 做一点事()
在 c++17 中用 std 替换 boost::timed_wait()
我有一个条件变量 std::condition_variable my_cond; 我希望能够用 std 等效项替换 boost::timed_wait() 。 如果前面提到的条件变量是提升...
我目前正在学习操作系统,我遇到了“使用条件变量解决并发问题”。 任务是模拟具有 si 队列的多线程 Web 服务器...
我正在开发的一个项目使用多个线程来处理文件集合。每个线程都可以将文件添加到要处理的文件列表中,因此我将(我认为是)一个线程...
两个condition_variable.wait_for可以与一个锁一起使用吗?
如果代码如下 std::互斥体; std::condition_variable条件; 布尔 is_ok = false; 无效函数(){ std::unique_lock lck(mut); 如果(!cond.wait_for(lck, 是...
为什么以下屏障实施不起作用: 无效 JoinQuery::barrier() { std::unique_lock lk(barrier_mutex); 屏障计数++; if (barrier_count == NUM_THREAD...
C++11 我可以确保condition_variable.wait()不会错过通知吗?
我有线程1执行以下代码: unique_lock ul(m); while(条件==真) CV.等待(ul); 线程 2 执行以下代码: 条件=假; CV.notify_one();
我的作业提供了运行时使用大量 CPU 的代码。目标是通过在生产者消费者问题中实施条件变量来减少该数量。 我
在 POSIX 中,要求当对条件变量和互斥体调用等待时,两个操作 - 解锁互斥体和阻塞线程,以原子方式执行,这样...