C++併發(創建線程)

創建線程
案例1:如何創建線程

#include <thread>
void do_some_work();
std::thread my_thread1(do_some_work);//函數對象會複製到新線程的存儲空間中,函數對象的執行和調用都在線程的內存空間中進行

class background_task
{
public:
	void operator()() const
	{
		do_something();
		do_something_else();
	}
};
background_task f;
std::thread my_thread2(f);//可調用對象f
std::thread my_thread3((background_task()));//std::thread my_thread(background_task())不可用,使用臨時變量該語句會被編譯器判定爲函數聲明
std::thread my_thread4{background_task()};//新的初始化語法

案列2:線程的加入、分離

#include <iostream>
#include <thread>
void do_some_work()

int main()
{
	cout<<"run do_some_work"<<endl;
	std::thread my_thread(do_some_work);//創建線程
	my_thread.join();//加入線程,主線程會等待子線程結束
	//my_thread.detach()  分離線程,主線程不會等待子線程結束
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章