這篇文章主要介紹“C++11啟動線程的方式有哪些”,在日常操作中,相信很多人在C++11啟動線程的方式有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++11啟動線程的方式有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
我們擁有10年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、成都做手機網(wǎng)站、H5技術(shù)、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。
函數(shù)指針方式啟動線程是最原始、最基礎(chǔ)的方式。定義實現(xiàn)線程的處理函數(shù)ThreadFunction,然后啟動線程的時候,將函數(shù)指針傳達給線程類的構(gòu)造函數(shù)。
啟動線程之后,打印了如下信息,說明線程啟動之后,調(diào)用了線程處理函數(shù)。
第二種啟動線程的方式是采用函數(shù)對象的形式,首先創(chuàng)建類ThreadOpeartor,然后該類重載operator()運算符,最后以仿函數(shù)的形式作為線程的參數(shù)傳遞給線程來啟動。
同樣的,運行程序之后,串口上可以查看到如下信息,說明函數(shù)對象方式啟動線程是生效的。
第三種啟動線程的方式是lambda函數(shù)形式,lambda函數(shù)即匿名函數(shù),它作為線程的參數(shù)來啟動線程。
編譯運行程序之后,也可以確認線程啟動的時候,調(diào)用了lambda函數(shù)。
第四種啟動線程的方式是類函數(shù)指針形式,先在類成員之中定義類成員函數(shù),然后以函數(shù)指針作為參數(shù)來啟動線程。
從運行結(jié)果看,啟動的線程成功調(diào)用了類的成員函數(shù)。
第五種啟動線程的方式是stb::bind形式, 首先是類成員函數(shù)作為stb::bind的參數(shù), 然后stb::bind再作為線程參數(shù)來啟動線程。
編譯成功之后,運行程序的結(jié)果如下,這也說明std::bind方式啟動線程是可行的。
函數(shù)指針啟動線程的方式是一種比較老的方式,linux系統(tǒng)中pthread庫是支持的,是屬于面向過程的思想,如果使用的系統(tǒng)不支持C++11, 那么可以采用這種方式。
函數(shù)對象啟動線程的方式可以在類內(nèi)部定義更多的細節(jié),比如定義成員變量,將更多的邏輯處理細節(jié)進行封裝。
lambda函數(shù)啟動線程的方式是代碼比較簡潔,由于函數(shù)是內(nèi)嵌形式,可讀性也比較好,它適用于線程處理函數(shù)的邏輯不是很復(fù)雜的場景。
類函數(shù)指針啟動線程的方式,線程的處理函數(shù)是屬于類,所以需要注意其生命周期。
std::bind啟動線程的方式,它可以與std::function結(jié)合起來,實現(xiàn)函數(shù)回調(diào)功能。
本節(jié)將采用函數(shù)對象的形式啟動線程,說明如何應(yīng)用到實際的應(yīng)用中。
假設(shè)有不同的命令,需要在線程中執(zhí)行,首先實現(xiàn)命令基類
然后創(chuàng)建執(zhí)行命令類JWorkThread, 并重載operator() 運算符, 并且內(nèi)部執(zhí)行命令。
接著現(xiàn)在有一個類JRunCmd繼承基類JCommand,則調(diào)用方式如下所示
到此,關(guān)于“C++11啟動線程的方式有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站題目:C++11啟動線程的方式有哪些
網(wǎng)站鏈接:http://chinadenli.net/article30/jiicpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、動態(tài)網(wǎng)站、微信小程序、企業(yè)網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)