C++多线程学习
1.创建线程的方法Thread,引用头文件#include< thread>,创建线程后,线程开始执行。
2.join()阻塞主线程,直到子线程执行完毕,再返回主线程。
3.detach()切断主线程和子线程联系,不要求一定完成子线程,一般情况下不使用detach(),使用时可能发生未知错误。
4.使用detach()后,不能join(),同样使用join()后,也不可以使用detach(),如果使用会产生异常。
5.joinable()判断当前线程是否可以join或者detach,如果可以返回true,否则返回false。
用其他方式创建线程
1) 用类对象创建线程(可调用对象);
当用detach()可能带来意外的现象,当成员函数使用引用时,在主线程执行完毕后,系统的局部变量回收,可能导致输出未知错误。
使用detach()后,将对象复制到系统空间中,主线程执行完毕后,不会对输出造成影响。(可以用析构函数证明)。所以只要成员函数中没有指针和引用就不会出现问题。
2) 用lambda表达式
Auto mylamthread = [] {表达式}