关于C++多线程,写得好的博客太多了,内容丰富,排版又好看,就是难找。
整体看过以后,本人也总结一下,仅作为日后参照。
这里先推荐看过的几篇博文链接,非常值得一看。
https://blog.csdn.net/dingdingdodo/article/details/108477195
https://www.cnblogs.com/yinbiao/p/11190336.html
http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/
https://www.cnblogs.com/hesper/p/10738987.html
https://blog.csdn.net/qq_39382769/article/details/96075346
注:本人所用IDE为Dev-C++。
重在简洁啊,而且既能用windows平台下的,也能用linux平台下的多线程机制。
1.C++11 线程库的基本用法:创建线程、分离线程
#include<iostream> #include<thread> #include<windows.h> using namespace std; void threadProc() { cout<<"this is in threadProc\n"; cout<<"thread1's id is "<<this_thread::get_id()<<endl; //获取所属线程的id } void threadProc2(int num) { cout<<"thread num = "<<num<<endl; } void threadProc3() { cout<<"this thread is detached\n"; } void threadProc4() { cout<<"this thread is detached and won't print in the same console.'\n"; } int main() { thread a;//创建线程1,定义线程,后面再分配任务 a = thread(threadProc); thread b(threadProc2,5);//创建线程2 ,定义线程的时候分配任务,参数类似于printf一样,可以为多个 a.join(); b.join();//采用join,主线程会阻塞等待子线程执行完毕 thread c(threadProc3); c.detach();//采用detach,主线程不会等,这个线程开启早,还能输出到主线程的控制台 cout<<"main thread exit"<<endl; thread d(threadProc4); d.detach();//这个线程太晚了,主线程已经结束,不能输出到主线程的控制台了 }
运行结果: