c++11开始引入了多线程,先来认识一个简单的c++11代码,鼻祖级别的HelloWorld
#include <iostream>
#include <thread>
using namespace std;
void Hello()
{
cout<<"Hello World"<<endl;
}
int main()
{
thread my_thread(Hello);
my_thread.join();
}
1、在标准c++库中对多线程支持的声明在新的头文件中,用于管理线程的函数和类在<thread>中声明,而那些保护共享数据源的函数和类在其他头文件中声明。
2、例子中将线程代码移到一个单独的函数中去,因为每个线程都必须有一个初始函数,就像主线程是从main函数开始的一样、
3、函数调用和例子中的线程调用有本质区别。函数调用是一个主线程从头到尾(执行函数也是一个保留现场和恢复现场的过程),而线程调用是开一个新的线程去执行,主线程在等待子线程执行完毕返回(代码中体现为my_thread.join())。主线程必须等待子线程执行返回,否则线程是不安全的,有未知的异常。