文章目录
- thread标准库
- pthread库
thread标准库
- C++ 11 后添加了新的标准线程库 std::thread 类,
- 需引入头文件<thread>
- 声明即创建线程对象,如 thread th1; 调用无参构造,生成一个空的线程对象;
- thread th(callable, args),传入调用函数及参数;
- callable,可为函数;
- callable,可为可调用对象;
- callable,可为lambda 表达式(无名函数)
- g++编译时,指定 -std=c++11;
在这里插入代码片
pthread库
- linux下使用pthread库创建子线程;
- 需包含头文件<pthread.h>,且编译时链入libpthread.so动态库;
- pthread_t 线程id类型;
- pthread_create(&curThID, attr, funcName, void* args) 创建线程并执行,成功返回0,并将线程id存入curThID变量地址; attr线程对象的属性(可NULL); funcName为返回void* 且参数为void*的函数
- 默认为守护线程,主线程结束时,不管子线程有没有结束,均都随主线程一起退出;
- pthread_exit(NULL) ,在主线程中等待子线程执行结束;
- pthread_attr_t 线程对象属性类型;
- pthread_attr_init(&attr) 线程对象属性初始化;
- pthread_attr_delete(attr) 线程对象属性删除;
- pthread_join(thId, status) 连接线程,顺序执行;
- pthread_detach() 分离线程;
在这里插入代码片