❝前一阵子有个小伙伴在群提问,今天特意找下源码看看。❞
pthread_join()
等待其结束,否则会变成"僵尸线程"。// qt-everywhere-src-5.12.1\qtbase\src\corelib\thread\qthread_unix.cpp
void QThread::start(Priority priority)
{
...
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
...
}
// qt-everywhere-src-5.12.1\qtbase\src\corelib\thread\qthread_win.cpp
void QThread::start(Priority priority)
{
...
// MSVC -MD or -MDd or MinGW build
d->handle = CreateThread(nullptr, d->stackSize,
reinterpret_cast<LPTHREAD_START_ROUTINE>(QThreadPrivate::start),
this, CREATE_SUSPENDED, reinterpret_cast<LPDWORD>(&d->id));
...
}