C++拾遗--C++多线程引入
前言
C++库文件也提供了对多线程的支持,主要包含头文件thread即可使用C++中的多线程。它的一些与多线程有关的方法和C语言不同。我们有必要来探讨下C++编程下如何使用多线程。
正文
1.示例
与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;
}
运行
在栈上开辟空间创建四个线程,并行地弹出四个窗口。从左到右即是窗口弹出的先后顺序,从结果看,它们是并发的、异步的。
2.总结
在C++中创建多线程很简单,使用标准库提供的thread类即可。在创建线程实例时,指定线程函数和函数实参。
函数join()
功能:阻塞调用线程,直到该线程结束后,调用线程才能继续执行。
例如,t1.join();会阻塞主线程,直到线程t1执行结束,主线程才会接着往下执行。
后面我们会对C++多线程中的其它方法进行介绍,以及子线程互斥和主子线程冲突进行探讨。
本专栏目录
所有内容的目录