C++中std::thread线程怎么使用


本篇内容主要讲解“C++中std::thread线程怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中std::thread线程怎么使用”吧!最简单的 std::thread用法如下,调用 thread将立即同时开始执行这个新建立的线程,新线程的任务执行完毕之后, main()的主线程也会继续执行。下面为C++ std::thread常用的成员函数get_id() 取得目前的线程 id, 回传一个 std::thread::id 类型joinable() 检查是否可 joinjoin() // 阻塞当前线程,等待子线程执行完毕detach() // 与该线程分离,一旦该线程执行完后它所分配的资源就会被释放native_handle() 取得平台原生的 native handle.sleep_for() // 停止目前线程一段指定的时间yield() // 暂时放弃CPU一段时间,让给其他线程很显然:新线程建立后,是否立即执行新线程业务代码,有一定的随机性。但是我们可以通过 thread.join() 或者 sleep_for() 来控制代码执行顺序C++ std::thread 的构建可以传入class类别中的成员函数,如下范例所示:AA::start 分别建立t1, t2 两个线程,而 t1传入 AA::a1 类别函数。notice : 第一个参数:AA::a1 前面需要添加 & 第二个参数:代表的是那个类对象 后面参数: 按照要求传入即可std:: thread 的构建也可以传入 lambda expression 表达式,如下范例免费云主机域名:在main主线程建立 t1线程后,主线程便继续往下执行,如果主线程需要等待 t1执行完毕后才能继续执行的话,就需要使用 join 。等待 t1线程执行完 foo 后主线程才能继续执行,如果 t1线程没有执行完,主线程会一致阻塞在 join这一行。承上例:如果主线程不想等或者可以不用等待 t1线程,可以使用 detach来让 t1线程分离,接着主线程就可以继续执行,t1线程 也在继续执行。定义方法:使用参数传递使用引用目的是: 希望建立另外一个线程去执行 myFunc , 之后需要取得这个 myFunc的运算结果,但是建立线程如果写: std::thread t1(myFunc , n) 这样会编译出错。因为在 std::thread 的参数传递方式为值传递,值传递是不可修改的左值,如果要让其能修改,可以考虑通过 : std::ref 来达成。到此,相信大家对“C++中std::thread线程怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: tornado执行asyncio异步报错run_forever assert self._self_reading_future is None如何解决

本篇内容介绍了“tornado执行asyncio异步报错run_forever assert self._self_reading_future is None如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 03/06 14:18
Next 03/06 14:36

相关推荐