如何等待两个pthreads?
How to wait two pthreads?
谁能告诉我最后两行代码之间发生了什么
// Creating Server and Client threads
pthread_create(&serverThread, NULL, (void* (*)(void*))&Server,(void *)0);
pthread_create(&clientThread, NULL, (void* (*)(void*))&Client,(void *)1);
// Wait until serverThread exits
pthread_join( serverThread, NULL);
// Wait until clientThread exits
pthread_join( clientThread, NULL);
我想同时等他们。如果两个线程之一 terminates/exits 怎么办?如果服务器让 运行 无限循环怎么办?
第一个连接 - pthread_join(serverThread, NULL);
将等到 serverThread 终止。
clientThread 在此期间可能会也可能不会终止;如果它终止,它将保持僵尸状态,直到 pthread_join(clientThread, NULL);
被调用。在这种情况下,pthread_join
将立即 return。
如果调用pthread_join(clientThread, NULL);
时clientThread还没有执行完,会再次等待直到clientThread
终止。
谁能告诉我最后两行代码之间发生了什么
// Creating Server and Client threads
pthread_create(&serverThread, NULL, (void* (*)(void*))&Server,(void *)0);
pthread_create(&clientThread, NULL, (void* (*)(void*))&Client,(void *)1);
// Wait until serverThread exits
pthread_join( serverThread, NULL);
// Wait until clientThread exits
pthread_join( clientThread, NULL);
我想同时等他们。如果两个线程之一 terminates/exits 怎么办?如果服务器让 运行 无限循环怎么办?
第一个连接 - pthread_join(serverThread, NULL);
将等到 serverThread 终止。
clientThread 在此期间可能会也可能不会终止;如果它终止,它将保持僵尸状态,直到 pthread_join(clientThread, NULL);
被调用。在这种情况下,pthread_join
将立即 return。
如果调用pthread_join(clientThread, NULL);
时clientThread还没有执行完,会再次等待直到clientThread
终止。