c – boost :: thread join函数阻塞调用线程
问题1:
我读到,当你在创建一个线程后调用join时,它会阻塞调用它的线程,直到线程函数返回.我正在尝试构建一个可以接受客户端并为每个客户端创建线程的乘法客户端服务器.问题是,在第一个客户端加入并创建了它的线程并调用了join之后,listen线程会一直挂起,直到完成为止.如何在不阻塞调用线程的情况下运行此线程? (在C#中我只调用Start()并且调用线程像往常一样运行). 问题2: 如果有人能解释我如何实现像C#中的线程一样的东西,那就太好了! 提前致谢!对不起,我的英语不好. 解决方法
您可以创建线程然后在其上调用detach(),这样如果线程尚未终止,线程对象的析构函数将不会抛出异常.老实说,在采用这种即发即弃的设计之前,我会建议你三思而后行.在C 11中,您可能希望改为调用std :: async(在这种情况下,您可能需要查看this Q&A,其中针对该函数的当前缺陷提出了一种解决方法).
好吧,如果你的程序除了等待任务完成之外别无其他事情,那么是 – 我会说,只需使用同步调用.但可能是您的程序想要并行执行某些操作,并且一旦完成它可能需要等待异步计算的结束才能继续.在这种情况下,它需要与线程连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |