1
1
|
2
1
你的问题是
你的工作线程超过了你的主线程。所以通知发生在主线程之前。 这只是您真正问题的一个症状;您使用的条件变量是错误的。除非是非常高级的使用,否则条件变量的所有使用都应该是三重的。
您的代码缺少有效负载。 为了发出信号,你:
听你说:
有微小的变化
遵循这种货物崇拜模式很重要,因为它避免了许多陷阱。它处理两个虚假的唤醒和通知后的等待。 您的代码缺少有效负载。因此,您的代码既易受等待线程超过信令线程的攻击,也易受虚假唤醒的攻击。 注意,在这里变得“聪明”是非常不鼓励的。例如,决定“我将使用一个原子变量来避免在发信号时使用互斥量”实际上是行不通的。要么按照上面的方法教条行事,要么花几个月时间好好学习C++的线程和内存模型,以便即兴发挥。 |
3
-1
例如,没有像windows api这样的状态。你的问题是新的线索
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |