多线程同步和多线程唤醒
C++ pthread synchronization and multiple wake up for thread
一个关于c++线程同步的问题。我们假设有两个pthread: Thread1和Thread2。
-
Thread1正在执行任务,在某些情况下,他必须将状态更新通知Thread2。
-
Thread2正在从同步队列中提取数据。因此,如果队列为空,Thread2可以休眠。
如何在两种情况下唤醒Thread2:
-
队列中的新消息通知;
或
-
Thread1的状态变化
实用代码示例
为简单起见,让Thread1将状态更改通知作为任务插入队列中,以便Thread2可以使用它。如果通知具有比常规工作任务更高的优先级,则允许Thread1在其他任务之前将其插入队列,使其成为下一个被消耗的任务。
为什么不使用相同的队列(但不同的命令代码)来通知thread2呢?Thread2只是以阻塞模式等待队列中的任何数据,对于每条新消息,检查是否有状态更新或数据,并做相应的操作。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 多线程比没有线程C++慢
- 具有 C++11 多线程的特征库
- 通过安装信号处理程序关闭多线程应用程序
- pthread_cond_wait唤醒多线程示例
- 多线程同步和多线程唤醒