我很好奇當所有線程內核對象句柄關閉時,線程是否仍然在Win32中運行?當所有線程內核對象句柄關閉時,線程仍在運行
所以我寫了一個簡單的測試代碼像
#include <cstdio>
#include <Windows.h>
#include <process.h>
unsigned int __stdcall thread1_main(void* p)
{
while(1)
printf("thread1 is running!\n");
return 0;
}
int main()
{
HANDLE h = (HANDLE)_beginthreadex(NULL, 0, thread1_main, NULL, 0, NULL);
CloseHandle(h);
while(1)
printf("main thread is running!\n");
return 0;
}
和輸出
它看起來像當所有關閉句柄,線程仍在運行。但是,msdn說「只要至少存在一個對象句柄,對象就會保留在內存中」。這很奇怪。