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++多線程中的其它方法進行介紹,以及子線程互斥和主子線程衝突進行探討。
本專欄目錄