|
|
1
0
首先,你只是在浪费资源。 然而,假设你真的需要这样做来完成比打印单词更重要的事情,这里有一个建议: 创建3个互斥体(pthread_mutex)
锁定最后两个互斥
在第一个线程中打印它的消息,然后解锁第二个互斥锁。
|
|
|
2
0
这里有一个简单的无锁实现,用于强制线程的顺序执行。它使用一个原子状态变量,可以表示四种可能的状态:
总的想法是在这些状态中循环:
第一部分,定义状态,声明全局原子状态,并定义执行状态转换的保护类。守卫的守卫构造函数将通过原子检查其就绪状态并将状态切换到工作状态来“忙碌”等待。守卫析构函数会将状态设置为下一个任务的就绪状态。
然后每个线程运行自己的循环,在各自的转换保护下打印它们的单词。
最后,您需要在创建线程之前初始化状态。
|
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |