pho*_*xis 5 c multithreading pthreads
有多个线程处理任务.一旦线程成功,所有线程都应该被取消,因为工作已经完成.一旦一个线程成功终止,我如何取消其他线程?谁会打电话pthread_cancel (),成功的线程如何告诉main或者产生它的线程(返回值?).
UPDATE
我不想简单地打电话,exit因为我现在想要一些控制权.例如,在取消线程之后,我将通过成功的线程处理找到的结果,并可能进行更多的处理,或者只是想让流程继续运行以进行更多的工作.
您可以选择一个简单的方案,其中 main 完成所有操作。
已main启动所有线程并对down某些信号量执行操作。当线程完成任务时,up对该信号量执行操作。当 main 被解锁时,它可以pthread_cancel所有线程(然后pthread_join确保)。
这种方式main启动和停止所有线程,所以它应该非常简单。