C++拾遗--C++多线程引入
C++库文件也提供了对多线程的支持,主要包含头文件thread即可使用C++中的多线程。它的一些与多线程有关的方法和C语言不同。我们有必要来探讨下C++编程下如何使用多线程。
与C语言多线程引入相同,我们先看一个C++多线程的示例。
#include <iostream> #include <thread> //C++中的多线程头文件 #include <Windows.h> using namespace std; void run(const void *p) { const char *mess = (const char*)p; printf("线程 id = %ld\n", GetCurrentThreadId()); MessageBoxA(NULL, mess, "thread", 0); } int main() { printf("******C++多线程引入***by David***\n"); //创建四个线程 thread t1(run, "I"); thread t2(run, "LOVE"); thread t3(run, "YOU"); thread t4(run, "BABY"); //阻塞主线程 t1.join(); t2.join(); t3.join(); t4.join(); return 0; }运行
在栈上开辟空间创建四个线程,并行地弹出四个窗口。从左到右即是窗口弹出的先后顺序,从结果看,它们是并发的、异步的。
在C++中创建多线程很简单,使用标准库提供的thread类即可。在创建线程实例时,指定线程函数和函数实参。
函数join()
功能:阻塞调用线程,直到该线程结束后,调用线程才能继续执行。
例如,t1.join();会阻塞主线程,直到线程t1执行结束,主线程才会接着往下执行。
后面我们会对C++多线程中的其它方法进行介绍,以及子线程互斥和主子线程冲突进行探讨。
本专栏目录
原文地址:http://blog.csdn.net/zhangxiangdavaid/article/details/44002051