91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++怎么正確使用線程

發布時間:2021-11-25 15:56:03 來源:億速云 閱讀:145 作者:iii 欄目:大數據

這篇文章主要介紹“C++怎么正確使用線程”,在日常操作中,相信很多人在C++怎么正確使用線程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++怎么正確使用線程”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

CP.26:不要分離線程

Reason(原因)

通常,生命周期超過創建它的線程的需求繼承自線程任務,但是通過分離(detach)實現這個想法使得監視和與分離的線程進行通信更加困難。在特殊情況下,很難(雖然不是不可能)確保線程可以像期望的那樣中止或繼續動作。

Example(示例)

void heartbeat();

void use()
{
   std::thread t(heartbeat);             // don't join; heartbeat is meant to run forever
   t.detach();
   // ...
}

這段代碼是線程的合理用法,其中通常會使用detach()。雖然這個做法存在問題。我們如何監視一個分離的線程以便知道它是否處于活動狀態?心跳線程可能發生某些問題,對于需要心跳功能的系統來說,丟失心跳是很嚴重的問題。因此,我們需要和心跳線程通信(例如通過一個信息流或使用condition_variable的通知事件)。

An alternative, and usually superior solution is to control its lifetime by placing it in a scope outside its point of creation (or activation). For example:

另外一個可選的,通常是更高級的做法是將它放到創建它(或者激活它)的作用域之外。例如:

void heartbeat();

gsl::joining_thread t(heartbeat);             // heartbeat is meant to run "forever"

This heartbeat will (barring error, hardware problems, etc.) run for as long as the program does.

心跳線程將會和程序運行同樣長的時間(除非發生錯誤,硬件問題等情況)。

Sometimes, we need to separate the point of creation from the point of ownership:

有時,我們需要將生成視點和所有權視點相分離。

void heartbeat();

unique_ptr<gsl::joining_thread> tick_tock {nullptr};

void use()
{
   // heartbeat is meant to run as long as tick_tock lives
   tick_tock = make_unique<gsl::joining_thread>(heartbeat);
   // ...
}
Enforcement(實施建議)

Flag detach().

標記分離(detach)操作。

到此,關于“C++怎么正確使用線程”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

赞皇县| 壶关县| 忻城县| 镇远县| 哈巴河县| 都江堰市| 涟源市| 东山县| 连山| 山东省| 合山市| 苍南县| 江孜县| 汤原县| 鹿邑县| 乌拉特中旗| 静安区| 个旧市| 义乌市| 郸城县| 玛纳斯县| 汤阴县| 四川省| 仲巴县| 敖汉旗| 威海市| 南漳县| 富民县| 镇江市| 措美县| 千阳县| 肇源县| 塘沽区| 手机| 东乌珠穆沁旗| 延庆县| 东至县| 新丰县| 乌海市| 北碚区| 东乌珠穆沁旗|