0

谁能告诉我最后两行代码之间发生了什么

// 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);

我想同时等他们。如果两个线程之一终止/退出怎么办?如果服务器一直在无限循环中运行怎么办?

4

1 回答 1

1

第一次加入 -pthread_join(serverThread, NULL);将等到serverThread终止。

在这段时间内,clientThread 可能会终止,也可能不会终止如果它终止,它将保持僵尸状态,直到pthread_join(clientThread, NULL);被调用。pthread_join在这种情况下将立即返回。

如果调用时clientThread还没有执行完pthread_join(clientThread, NULL);,它会再次等待直到clientThread终止。

于 2015-01-11T09:27:11.773 回答