![]() |
1
0
首先,你只是在浪费资源。 然而,假设你真的需要这样做来完成比打印单词更重要的事情,这里有一个建议: 创建3个互斥体(pthread_mutex)
锁定最后两个互斥
在第一个线程中打印它的消息,然后解锁第二个互斥锁。
|
![]() |
2
0
这里有一个简单的无锁实现,用于强制线程的顺序执行。它使用一个原子状态变量,可以表示四种可能的状态:
总的想法是在这些状态中循环:
第一部分,定义状态,声明全局原子状态,并定义执行状态转换的保护类。守卫的守卫构造函数将通过原子检查其就绪状态并将状态切换到工作状态来“忙碌”等待。守卫析构函数会将状态设置为下一个任务的就绪状态。
然后每个线程运行自己的循环,在各自的转换保护下打印它们的单词。
最后,您需要在创建线程之前初始化状态。
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |