c++11–thread库介绍
一.创建线程
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include<iostream> #include<thread>
void printHelloWorld() { std::cout<<"Hello world"<<std::endl; } int main() { std::thread thread1(printHelloWorld); return 0; }
|
但这个时候会报错,因为主线程先于子线程结束
二.join()函数
强制主线程等待子线程结束后再结束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include<iostream> #include<thread>
void printHelloWorld() { std::cout<<"Hello world"<<std::endl; } int main() { std::thread thread1(printHelloWorld); thread1.join(); return 0; }
|
三.detach()函数
分离线程,即使主线程先于子线程结束也不会报错,此时子线程在后台运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include<iostream> #include<thread>
void printHelloWorld() { std::cout<<"Hello world"<<std::endl; } int main() { std::thread thread1(printHelloWorld); thread1.detach(); return 0; }
|
四.joinable()函数
判断是否可以调用join()函数或者detach()函数,返回布尔值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include<iostream> #include<thread>
void printHelloWorld() { std::cout<<"Hello world"<<std::endl; } int main() { std::thread thread1(printHelloWorld); bool isJoin = thread1.joinable(); if(isJoin) { thread1.join(); } return 0; }
|