我目前正在开发一个使用 select()
来处理多个客户端的多客户端服务器。但是,当客户端发送需要大量计算的消息时,我必须使用 pthread_create()
创建一个新线程,以便我的服务器可以保持对来自客户端的其他消息的响应。为该客户端完成计算后,我需要能够向客户端返回一条消息。但我不确定如何知道该线程是否已完成以及如何获得最终结果。显然,我不能使用 pthread_join()
,因为它会在运行新线程时阻塞我的服务器程序。那么 C 是否提供了一个函数,我可以使用它来获取该子线程的最终结果?我也想避免使用全局变量。
最佳答案
你可以在从主线程加入它之前检查线程是否已经完成(这将是非阻塞的)
您应该从这里了解如何操作:How do you query a pthread to see if it is still running?
否则你可能只从子线程发回答案,你可以将连接信息作为线程函数的参数传递。
关于C - 使用 pthread 并等待返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042591/