我有一个使用pthreads在共享内存架构上运行的并行C程序.如何在不杀死整个过程的情况下杀死一个线程?即如果一个线程首先完成,我想在退出之前等待所有其他线程. exit(status_code)杀死了我想要的整个过程.我可以有一个障碍,等待所有线程到达障碍然后退出,但可能有一个更简单的方法?
谢谢.
使用pthread_join中的"主"(司机)线程等待所有其他的人终止.
要澄清上面"线程终止"的含义,请查看pthread_exit联机帮助页:
执行从主线程以外的任何线程的start函数返回将导致对pthread_exit()的隐式调用,使用函数的返回值作为线程的退出状态.
因此,pthread_join等待连接的线程从它返回启动函数或调用pthread_exit.
(你需要跟踪你创建的所有线程以使用它.如果你分离处理线程,这些都不起作用 - 在这种情况下你可能不应该这样做.)
您可以使用pthread_join()函数来加入所有线程.
举个例子,假设您创建了5个线程,并且想要在完成所有线程后从main函数中取消操作.
pthread_t threadId[5]; // holder for 5 thread
// Create 5 threads
for(index = 0; index < 5; index++)
pthread_create(&(threadId[index]), NULL, producer, (void *) &(argsForProducers[index]));
// Join them
for (index = 0; index < 5; index++)
pthread_join(threadId[index], NULL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5828 次 |
| 最近记录: |