|
|
1
2
我能看到的最直接的方法是连接线程。看到了吗 here . 其思想是,在join调用中,命令线程将等待工作线程退出,然后继续。 或者,您可以使用一些共享变量和互斥锁来汇总某些内容。 |
|
|
2
2
如果子线程在完成时确实正在退出(而不是等待更多的工作),则父线程可以调用
显然,如果父线程正在做其他事情,它就不能一直阻塞
注意,你没有
有
打电话
|
|
|
3
2
pthreads返回
|
|
|
4
1
虽然可以实现IPC机制,以便在其他线程即将终止时通知主线程,但是如果您想在某个线程终止时执行某些操作,则应该尝试让终止线程自己执行。
如果你不想打电话
|
|
|
5
0
您可以使用一个由“要删除的线程对象”组成的队列,用互斥体保护对该队列的访问,然后用pthread条件变量发出信号,指示队列中有可用的内容。 但你真的想这么做吗?一个更好的模型是,每个线程只需清理自身,而不必首先担心与主线程同步。 |
|
|
6
0
|
|
7
0
正如其他人所提到的,处理
鉴于
穿
到目前为止,最简单的解决方案是在工作线程中处理清理。记录断开连接(在日志中添加互斥锁),根据需要删除资源,并退出工作线程而不向父线程发出信号。
|
|
|
8
0
我遇到了和你描述的完全一样的问题。打开~300个客户机连接后,我的Linux应用程序无法创建新线程,因为pthread_join从未被调用。对我来说,pthread_tryjoin_np的使用有帮助。
潜在的问题是,我不认为pthread_tryjoin_np是部分正式的POSIX标准,所以这个解决方案可能不可移植。 |