亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

土默特右旗| 松阳县| 丰都县| 崇明县| 库尔勒市| 太保市| 明水县| 衢州市| 当涂县| 横峰县| 宣恩县| 扶绥县| 平邑县| 宁安市| 廊坊市| 吐鲁番市| 特克斯县| 五华县| 河东区| 巴青县| 吕梁市| 葫芦岛市| 铅山县| 西和县| 阿坝| 赫章县| 泸西县| 灌阳县| 灵宝市| 湄潭县| 兴化市| 且末县| 财经| 工布江达县| 安义县| 调兵山市| 娱乐| 辉县市| 临城县| 利川市| 徐州市|