簡體   English   中英

C++ 中的可連接線程

[英]Joinable thread in C++

http://www.cplusplus.com/reference/thread/thread/joinable/

如果線程 object 表示執行線程,則它是可連接的。

在這些情況下,線程 object 是不可連接的:

 if it was **default-constructed**. if it has been **moved from** (either constructing another thread object, or assigning to it). if either of its members join or detach has been called.
  • 這里的 default constructed 是什么意思?

  • W.R.T 移自 - 當我們必須將線程放入向量中時,我們可能會在外部創建線程對象,然后將它們移動到向量中。 這是 this moved from 所指的案例之一嗎?

  • detach調用一次后,是不是就不能再join了呢?

這里的 default constructed 是什么意思?

它意味着一個 std::thread 沒有 arguments 構造,因此不代表一個線程(即它不是“運行中的”)。 請參閱文檔: https://en.cppreference.com/w/cpp/thread/thread/thread

W.R.T 移自 - 當我們必須將線程放入向量中時,我們可能會在外部創建線程對象,然后將它們移動到向量中。 這是 this moved from 所指的案例之一嗎?

是的,您不能在將線程移入向量后加入線程。 但是您當然可以在向量中加入新線程 object(它被“移動到”的位置)。

detach調用一次后,是不是就不能再join了呢?

沒錯,您不能加入已經加入或分離的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM