- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有多个线程在处理一个任务。一旦一个线程成功,所有线程都应该被取消,因为工作已经完成。一旦一个线程成功终止,我如何取消其他线程?谁将调用 pthread_cancel ()
,成功的线程将如何告诉 main
或生成它的线程(返回值?)。
更新
我不想简单地调用 exit
因为我现在想要一些控制。例如,在线程被取消后,我将通过成功的线程处理找到的结果,并可能做更多的处理,或者只是想让进程继续运行以进行更多的工作。
最佳答案
您可以选择一个简单的方案,其中 main 做所有事情。
让 main
启动所有线程并对某些信号量执行 down
。当线程完成任务时,对该信号量执行 up
操作。当 main 解锁时,它可以pthread_cancel
所有线程(然后 pthread_join
以确保)。
这样 main
启动和停止所有线程,所以它应该非常简单。
关于完成共同工作后取消 POSIX 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125101/
所以,我有一个类似于 this one 的用例,但我觉得有一些额外的细节值得提出一个新问题。 ( related questions ,供引用) 我正在编写一个实现 a cycle 的数据结构.基本设
我正在使用 Django 编写一个社交网络应用程序,需要实现类似于 Facebook“Mutual Friends”概念的功能。我有一个像这样的简单模型: class Friend(models.Mo
我有一个 iOS 应用程序,用户可以在其中使用 Facebook 登录并授予 user_friends 权限。从 Graph API 2.0 开始,Facebook 声称你无法获取两个人之间所有的共同
我想知道将来对我来说最简单的方法是什么,可以使查询既有效又不那么复杂。 我应该像这样保存双向关系吗 from_id=1, to_id=2from_id=2, to_id=1 或者只创建一个唯一的行 f
我是一名优秀的程序员,十分优秀!