我目前正在编写一个程序,主线程将创建三个子线程。这些线程同时运行,我想要做的是一旦一个子线程完成,我会检查输出是否正确。如果是,则终止其他两个线程;如果不是,则丢弃该线程的结果并等待其他两个线程的结果。
我正在使用 pthread_create 在主函数中创建三个结果。但我不知道如何使用连接功能。如果我在 main 函数中使用了 3 次 join 函数,它只是一个一个地等待,直到三个线程完成。
我的计划是这样的:
int return_value;
main(){
pthread_create(&pid[0], NULL, fun0, NULL);
pthread_create(&pid[1], NULL, fun1, NULL);
pthread_create(&pid[2], NULL, fun2, NULL);
}
fun0(){
...
if( check the result is right ){
return_value = result;
if (pid[1] is running) pthread_kill( pid[1], SIGTERM );
if (pid[2] is running) pthread_kill( pid[2], SIGTERM );
}
fun1() ...
fun2() ...
函数 0、1 和 2 彼此相似,一旦一个函数有正确答案,它将杀死其他两个线程。但是,在运行程序时,一旦处理了 pthread_kill,整个程序就终止了,而不仅仅是一个线程。我不知道为什么。
而且我仍然不知道是否还有其他方法可以编写此程序。谢谢你帮我解决这个问题。