国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++創(chuàng)建線程的三種方式

這篇具有很好參考價值的文章主要介紹了C++創(chuàng)建線程的三種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C++創(chuàng)建線程的三種方式

早期的C++并不支持多線程的創(chuàng)建,如果要創(chuàng)建多線程,依賴的是系統(tǒng)提供的一些方法(例如linux的 pthread). 從C++11以后開始,提供了std::thread線程庫,因此我們可以創(chuàng)建std::thread類對象的方式來創(chuàng)建線程。創(chuàng)建的方式主要有三種:

創(chuàng)建線程的三種方式:

  • 通過函數(shù)指針
  • 通過函數(shù)對象
  • 通過lambda函數(shù)

使用std::thread類創(chuàng)建對象,必須包含頭文件

#include <thread>

創(chuàng)建的形式是

std::thread thobj(<CALL_BACK>)

新線程將在創(chuàng)建新對象后立即啟動,并將與啟動該線程的線程并行執(zhí)行傳遞的回調。而且,任何線程都可以通過在該線程的對象上調用join()函數(shù)來等待另一個線程退出。

通過函數(shù)指針創(chuàng)建線程

#include <iostream>
#include <thread>
#include <chrono>

using namespace std;

void thread_func()
{
	for(int i= 0; i< 10; ++i)
	{
		cout<<" thread thread_func is running..."<< endl;
		std::this_thread::sleep_for(std::chrono::seconds(1));
	}
}

int main()
{
	 thread threadobj(thread_func);
	cout<<"main Thread is running..."<<endl;
	
	threadobj.join();
	cout<<" exit from main Thread"<<endl;

	return 0;
}

需要注意的是, thread threadobj(thread_func), 函數(shù)名是不加括號的。

通過函數(shù)對象創(chuàng)建線程

#include <iostream>
#include <thread>
#include <chrono>

using namespace std;

class Thread_Test
{
public:
	void operator()()
	{
		for(int i = 0; i < 10; i++)
		{
			cout<<" Thread_Test is running..."<<endl;
			std::this_thread::sleep_for(std::chrono::seconds(1));
		}
	}	
};

int main()
{
	thread threadobj((Thread_Test()));
	cout<<"main Thread is running..."<<endl;
	
	threadobj.join();
	cout<<" exit from main Thread"<<endl;

	return 0;
}

與上面的方法對比,此處對象Thread_Test()是必須要加括號的.關于operator() 函數(shù)對象(仿函數(shù))的相關知識不在這里展開。文章來源地址http://www.zghlxwxcb.cn/news/detail-589229.html

lambda函數(shù)創(chuàng)建線程

#include <iostream>
#include <thread>
#include <chrono>

using namespace std;
int main()
{
	cout<<"main Thread is running..."<<endl;
	thread threadobj([]{
		for (int i = 0; i < 10; i++)
		{
			cout<<"lambda thread is running ..." <<endl;
			::this_thread::sleep_for(::chrono::seconds(1));
		}
	});

	threadobj.join();
	cout<<" exit from main Thread"<<endl;

	return 0;
}

到了這里,關于C++創(chuàng)建線程的三種方式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • c++中 遍歷map的三種方式

    運行結果: 方式一: key:0 value:aaa key:1 value:bbb key:2 value:ccc 方式二: key:0 value:aaa key:1 value:bbb key:2 value:ccc 方式三: key:0 value:aaa key:1 value:bbb key:2 value:ccc

    2024年02月13日
    瀏覽(15)
  • C++ 參數(shù)的三種傳遞方式和應用參加

    C++ 參數(shù)的三種傳遞方式和應用參加

    C++ 參數(shù)的三種傳遞方式分別是 值傳遞 、 指針傳遞 和 引用傳遞 。 值傳遞 值傳遞的實質 將實參的值(a、b)復制到形參(m、n)相應的存儲單元中,即形參和實參分別占用不同的存儲單元。 值傳遞的特點 值傳遞的特點是單向傳遞,即主調函數(shù)被調用時給形參分配存儲單元,把

    2024年02月08日
    瀏覽(20)
  • C++入門學習(三十)一維數(shù)組的三種定義方式

    C++入門學習(三十)一維數(shù)組的三種定義方式

    數(shù)組是什么? 數(shù)組(Array)是有序的元素序列。?若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標變量。用于區(qū)分數(shù)組的各個元素的數(shù)字編號稱為下標。數(shù)組是在程序設計中,為了處

    2024年02月19日
    瀏覽(23)
  • 【C++的奇跡之旅(二)】C++關鍵字&&命名空間使用的三種方式&&C++輸入&輸出&&命名空間std的使用慣例

    【C++的奇跡之旅(二)】C++關鍵字&&命名空間使用的三種方式&&C++輸入&輸出&&命名空間std的使用慣例

    C++是在C的基礎之上,容納進去了面向對象編程思想,并增加了許多有用的庫,以及編程范式 等。熟悉C語言之后,對C++學習有一定的幫助,本章節(jié)主要目標: 補充C語言語法的不足,以及C++是如何對C語言設計不合理的地方進行優(yōu)化的,比如:作用 域方面、IO方面、函數(shù)方面、

    2024年04月09日
    瀏覽(23)
  • Java 創(chuàng)建多線程的三種方法

    Java 創(chuàng)建多線程的三種方法

    在Java中創(chuàng)建多線程,往往都要通過Thread類來實現(xiàn),今天學習下Java中創(chuàng)建多線程的三種方法[1]。 通過繼承 Thread類 實現(xiàn)多線程。 主要方法: 1.void run(), 線程開啟后,方法將被調用執(zhí)行 2.void start(), 使此線程開始執(zhí)行, Java虛擬機會調用run()方法 實現(xiàn)步驟: 1.定義類,繼承 Thread類

    2024年02月05日
    瀏覽(21)
  • Java 實現(xiàn)多線程的三種方式

    1、三種方法的介紹和比較 1、1三種方式得介紹 1、繼承Thread類 2、實現(xiàn)Runnable接口 3、實現(xiàn)Callable接口 1、2三種方法的介紹和比較 1、2、1、實現(xiàn)Runnable接口相比繼承Thread類有如下優(yōu)勢 1、增強程序的健壯性,將業(yè)務邏輯與線程調度分離 2、線程池只能放入實現(xiàn)Runable或Callable類線程

    2024年02月02日
    瀏覽(22)
  • Java 多線程實現(xiàn)的三種方式

    Java 多線程實現(xiàn)方式主要有三種:繼承 Thread 類、實現(xiàn) Runnable 接口、使用 ExecutorService、Callable、Future 實現(xiàn)有返回結果的多線程。其中前兩種方式線程執(zhí)行完后都沒有返回值,只有最后一種是帶返回值的。 1、繼承 Thread 類實現(xiàn)多線程 繼承 Thread 類的方法盡管被我列為一種多線程

    2023年04月27日
    瀏覽(24)
  • Springboot中使用線程池的三種方式

    前言 多線程是每個程序員的噩夢,用得好可以提升效率很爽,用得不好就是埋汰的火葬場。 這里不深入介紹,主要是講解一些標準用法,熟讀唐詩三百首,不會作詩也會吟。 這里就介紹一下springboot中的多線程的使用,使用線程連接池去異步執(zhí)行業(yè)務方法。 由于代碼中包含詳

    2024年02月08日
    瀏覽(24)
  • Spring 創(chuàng)建 Bean 的三種方式

    在使用 Spring 框架后,對象以 Bean 的形式統(tǒng)一交給 IOC 容器去創(chuàng)建和管理?,F(xiàn)階段主流的方式是基于 SpringBoot 框架,基于注解的方式實現(xiàn) Bean 的創(chuàng)建,但在原生 Spring 框架中其實存在三種創(chuàng)建 Bean 的方式。 BeanProcess 實體類,雖然加了 @Component 等三個注解,但只在注解方式創(chuàng)建

    2024年02月14日
    瀏覽(17)
  • Java創(chuàng)建文件的三種方式

    Java創(chuàng)建文件的三種方式

    內容來自于韓順平學Java 在學習其視頻下跟著編寫 文件創(chuàng)建成功

    2024年04月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包