![](/img/trans.png)
[英]C++ How to communicate with a joinable thread using std::promise?
[英]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.