c++標准庫之thread


class thread是對線程的抽象。以下分別介紹thread是如何表示線程的大部分特征的。

執行體

  線程的執行體由一個可執行(callable)對象來表示。這個執行體可以在thread創建的時候指定。thread創建完成后線程即啟動執行。

  template<class Fn,class ...Args>

  explicit thread(Fn &&fn,Args&&... args);

  如果在創建thread的時候不指定,則該thread就沒有執行體,也就不會有線程被啟動。

  thread()noexcept;

  thread也可以移動構造,從另一個已存在的thread獲得執行體,同時還接收線程狀態。相當於實際的線程換了個宿主。

  thread(thread &&)noexcept;

  thread不能賦值和拷貝。

  thread(const thread &)=delete;  

分離屬性

  thread在創建的時候不具備分離屬性。成員函數detach可設置thread為分離的。

join

  join用於阻塞當前線程等待thread執行完執行體。一般用於多線程之間進行同步。對於不具備分離屬性的線程必須要join,否則會導致terminal。

joinable屬性

  成員函數joinable用於檢測thread是否需要join。joinable為false的情況有3種:1.thread調用過detach; 2.thread已經join過; 3.thread為空。

線程句柄

  成員函數get_id用於返回線程的句柄。get_id可能返回joinable為true的thread的id,joinable為false則返回 id().

 

  以上就是標准庫thread的所有操作,所以thread不具備指定優先級的功能。

thread的輔助函數

  thread的所有輔助函數位於std::this_thread命名空間中。

  thread::id get_id()用於獲取當前線程id.

  void yield()noexcept 用於退出本次執行,等待下次調度.

      sleep_for(duration) 用於使當前線程阻塞一個時間段

  sleep_until(time_point) 用於使當前線程阻塞直到某個時間點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM