C++拾遺--C++多線程引入

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




本專欄目錄

所有內容的目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章