【发布时间】:2013-04-09 07:29:58
【问题描述】:
我很好奇当所有线程内核对象句柄都关闭后,线程是否还在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 说“只要至少有一个对象句柄存在,一个对象就会保留在内存中”。这很奇怪。
【问题讨论】:
标签: multithreading winapi object