编译器在jthread::join的调用中会插入一条指令来阻塞当前线程直到目标线程结束。具体来说,在C++20中,std::jthread的实现会调用底层平台的线程API(例如pthread_join、Win32 WaitForSingleObject等)来完成线程间同步操作。而这些API会把当前线程挂起,直到目标线程退出。以下是Windows平台下的代码示例:
void jthread::join() noexcept {
if (joinable()) {
WaitForSingleObject(m_handle, INFINITE);
CloseHandle(m_handle);
m_handle = nullptr;
}
}