溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++怎么在線程之間傳遞少量數(shù)據(jù)

發(fā)布時(shí)間:2021-11-25 15:53:52 來源:億速云 閱讀:108 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“C++怎么在線程之間傳遞少量數(shù)據(jù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++怎么在線程之間傳遞少量數(shù)據(jù)”吧!

CP.31:在線程之間以傳值方式傳遞少量數(shù)據(jù),而不是傳遞引用或指針

Reason(原因)

以拷貝形式提供的少量數(shù)據(jù)的復(fù)制和訪問成本會(huì)低于使用某種鎖定機(jī)制的共享??截惒僮魈烊槐WC所有權(quán)的唯一性(簡(jiǎn)化代碼),避免可能出現(xiàn)的數(shù)據(jù)競(jìng)爭(zhēng)。

Note(注意)

Defining "small amount" precisely is impossible.

不可能確切定義什么是“少量”。

Example(示例)

string modify1(string);
void modify2(string&);

void fct(string& s)
{
   auto res = async(modify1, s);
   async(modify2, s);
}

調(diào)用modify1的過程包含兩次拷貝string的值;調(diào)用modify2的過程就不會(huì)。另一方面,(多任務(wù)環(huán)境下,譯者注)modify1的實(shí)現(xiàn)和單線程代碼完全相同,而modify2會(huì)需要某種形式的互斥鎖以避免數(shù)據(jù)競(jìng)爭(zhēng)。如果是短string(比如說10個(gè)字符),調(diào)用modify1的過程會(huì)出奇地快,基本上就是線程切換的成本。如果是長(zhǎng)string(例如1,000,000個(gè)字符),拷貝兩次可能不是一個(gè)好主意。

注意參數(shù)處理過程沒有為異步操作做任何事。這個(gè)判斷同樣適用于考慮使用消息還是共享內(nèi)存的情況。

到此,相信大家對(duì)“C++怎么在線程之間傳遞少量數(shù)據(jù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI