栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++(11):thread

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++(11):thread

C++11的标准库中封装了线程的类,因此可以跨平台的使用线程库:

#include 
#include 
#include 
using namespace std;

void tFunc(int a, const char* str)
{
	cout<<"thread func run, param a:"<

join():

join成员函数表示等待线程的完成,当main函数调用了t1.join()后即进入了阻塞状态,直到线程t1运行完毕,当join返回后,主线程释放线程的资源(与多进程waitpid类似)
注意:如果没有执行join,线程对象t1会在主线程main的return后被析构,但线程函数还处于执行中,因此可能会产生异常。

detach():

detach成员函数表示子线程与主线程进行分离,detach返回后子线程成为独立的线程,子线程执行完成后会自己释放掉资源。分离后的,主线程将对子线程没有控制权。

joinable():

用于判断一个线程是否可以join,如果返回false,那么有以下几种可能:

  • 这是个默认构造的thread对象,也就是说还没有执行相应的函数
  • 这个线程对象的控制权被转移(通过转移构造函数或转移赋值函数)到其他线程对象上
  • 这个线程对象已经调用过了join或detach函数

转移控制权:

thread禁用了拷贝构造函数和赋值运算符,只能通过转移构造函数,和转移赋值运算符将控制权进行转移:

#include 
#include 
#include 
using namespace std;

void tFunc(int a, const char* str)
{
	cout<<"thread func run, param a:"<

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号