C++ 多線程實現

爲了更好的實現並行運算,可以採用多線程,多線程的初始運行函數有三種傳參方式,和普通函數一樣,分別是值傳遞、引用、指針。當涉及多個線程同時修改某一共享數據時,爲了防止數據破壞,可使用線程同步,以下是實現的一個例子

#include <thread>  
#include <mutex>

struct param
{

	int nMaxIndex;
	....
};


void threadFunction(void *param)
{
	std::lock_guard<std::mutex> mtx_locker(mtx); //多線程同時修改共享數據的處理:數據同步
	struct param *funPara = (struct param*)param;
	int nMaxIndex = funPara->nMaxIndex;
    .........
}

void main()
{
    struct param ParamStrucrt;
	ParamStrucrt.nMaxIndex = nMaxIndex;
    std::thread threadPro(threadFunction, &ParamStrucrt);
	threadPro.detach();//獨立於引用線程(本例main函數所在線程,線程結束資源釋放)
    //threadPro.join();//引用線程堵塞,直到threadPro執行完畢,再執行後面代碼
    ......
}

實驗過程中發現main函數中同時實例化兩個並列線程,分別設置成join方式,則兩個線程是順序執行的,與不設線程沒有區別,沒弄明白,希望大牛給與指點

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