【发布时间】:2017-09-19 15:09:04
【问题描述】:
我想创建一个服务器套接字,但不想通过“接受调用”阻止我的主应用程序。所以我将在主应用程序中创建一个套接字。使用 pthread 机制我创建了一个新线程,我将在其中使用“接受调用”。在主应用程序中创建套接字后,我调用了“pthread join”。现在,当这个线程执行时,“接受调用”再次阻塞了主应用程序。我使用 gdb 进行了检查。我该如何解决这个问题?
【问题讨论】:
-
“pthread_join() 函数应暂停调用线程的执行,直到目标线程终止。” - 这意味着它将阻塞主线程,因为新线程仍将监听任何新调用。有关更多详细信息,请访问此处:pthread_join
-
那么,不调用 pthread_join() 对我有用吗?
-
Protip - 不要调用 pthread_join 除非你别无选择。在你的情况下,一个接受循环,永远没有必要。
-
那pthread join() 用在什么场景呢?如果主线程被挂起。这就像一个接一个地调用一个函数。我觉得我们根本不需要线程。
-
@SnehaDolly 如果你要等他们,一一不,没有意义。如果您的线程与进程具有相同的生命周期,例如。您的 accept() 循环或池线程,加入不是必需的,如果可能的话,应该避免。
标签: c linux network-programming pthreads