因为一直用C++刷leetcode。但是感觉不会多线程都不敢说学过C++。故记录C++多线程学习过程。当前学习进度0.00001%。
学习的第一篇博客:https://blog.csdn.net/qq_22494029/article/details/79273127
学习后尝试复现添加注释并修改如下:
#include<thread> //多线程头文件
#include<iostream>//输入输出流
#include<windows.h>
using namespace std;
void Try_Thread1();//第一个线程功能{}
void Try_Thread2();//第二个线程功能{}
int main()
{
thread first(Try_Thread1);//定义第一个线程,将功能放入
first.detach();//detach将线程从当前线程分离,即不受阻塞,操作系统将其独立对待;此处是将first线程从主线程分离出去,主线程和first能够同时运行;
thread second(Try_Thread1);//同上;
second.detach();
cout<<"多线程学习之0.00001%"<<endl;
system("pause");//暂停屏幕;VS常用操作,可以看到打印结果;
}
void Try_Thread1()//第一个线程具体的功能
{ for(int i=0;i<10;i++){
cout<<"Test_Thread1="<<" "<<i<<endl;
sleep(100);
}
}
void Try_Thread2()//第二个线程具体的功能
{ for(int j=100;j<110;j++){
cout<<"Test_Thread2="<<" "<<j<<endl;
sleep(100);
}
}
与detach()类似多线程中还有join操作。二者区别如下:
thread.join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的join()方法,直到线程A执行完毕后,才会继续执行线程B。join是阻塞当前线程,并等待object对应线程结束,该线程继续执行搜索。
detach是将线程从当前线程分离出去,即不受阻塞,操作系统会将其独立对待。
参考链接:https://blog.csdn.net/liuhannan111/article/details/78894968