See std::thread and Concurrency support library (since C++11) for more detail.
std::thread
thread_gaurd
RAII (Resource Acquisition is Initialization) 的展現,避免因為 exception 被丟出時的 stack unwinding 造成 thread t 沒能被 join。
- 只有在
t.joinable()
傳回 true 時才能對 std::thread
物件呼叫 t.detach()
- 在 C++20 後,可以使用 std::jthread,即是 RAII 的 thread
Pass arguments to thread’s function
預設傳遞參數的方式是 pass-by-value,所以以下的 code 會 fail。
mutex & lock_gaurd & jthread
Output:
Reference