加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – boost :: thread join函数阻塞调用线程

发布时间:2020-12-16 09:44:48 所属栏目:百科 来源:网络整理
导读:问题1: 我读到,当你在创建一个线程后调用join时,它会阻塞调用它的线程,直到线程函数返回.我正在尝试构建一个可以接受客户端并为每个客户端创建线程的乘法客户端服务器.问题是,在第一个客户端加入并创建了它的线程并调用了join之后,listen线程会一直挂起,直
问题1:
我读到,当你在创建一个线程后调用join时,它会阻塞调用它的线程,直到线程函数返回.我正在尝试构建一个可以接受客户端并为每个客户端创建线程的乘法客户端服务器.问题是,在第一个客户端加入并创建了它的线程并调用了join之后,listen线程会一直挂起,直到完成为止.如何在不阻塞调用线程的情况下运行此线程? (在C#中我只调用Start()并且调用线程像往常一样运行).

问题2:
一般情况下(我可能会遗漏一些东西),为什么有人想要一个阻塞线程?那是什么意思?调用普通函数会不会更容易,更快?

如果有人能解释我如何实现像C#中的线程一样的东西,那就太好了!

提前致谢!对不起,我的英语不好.

解决方法

What can I do to make this thread run without blocking the calling thread

您可以创建线程然后在其上调用detach(),这样如果线程尚未终止,线程对象的析构函数将不会抛出异常.老实说,在采用这种即发即弃的设计之前,我会建议你三思而后行.在C 11中,您可能希望改为调用std :: async(在这种情况下,您可能需要查看this Q&A,其中针对该函数的当前缺陷提出了一种解决方法).

In general (Im probably missing something),why would someone want a blocking thread? What’s the point of that? Wouldn’t it be easier and faster to just call a regular function?

好吧,如果你的程序除了等待任务完成之外别无其他事情,那么是 – 我会说,只需使用同步调用.但可能是您的程序想要并行执行某些操作,并且一旦完成它可能需要等待异步计算的结束才能继续.在这种情况下,它需要与线程连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读