关于CLOSEHANDLE的有关问题
关于CLOSEHANDLE的问题,
PROCESS_INFOMATION PI;
DWORD dwExitCode;
BOOL bSucc=CreateProcess(...,&PI);
if(bSucc)
{
CloseHandle(PI.hthread);
---------------------------------
} |
|
为什么要关闭这个呢?关闭这个的意思是什么呢?
高手指教!
------解决方案--------------------
当前进程给pi.hProcess和pi.hThread均增加了引用计数。如果本进程不再需要使用该HANDLE,应CloseHandle, 使子进程在退出后及时释放资源。
------解决方案--------------------
这个handle没啥用.如果你在后面不需要waitforsingleobject等待它结束的话
------解决方案--------------------
这个叫“剪断脐带”,当PI.hthread里被填入新进程的主线程句柄时,它的内核引用计数变为2,调用closehandle后减为1,并且使得父进程的线程失去操作子进程的线程的能力。
------解决方案--------------------
调用这个CloseHandle并不意味着结束线程,而是表示不关心此句柄的状态了, 也就无法控制子进程的线程了。如果需要关心,可以在子进程结束后再CloseHandle, 但一定得CloseHandle.
PROCESS_INFOMATION PI;
DWORD dwExitCode;
BOOL bSucc=CreateProcess(...,&PI);
if(bSucc)
{
CloseHandle(PI.hthread);
---------------------------------
} |
|
为什么要关闭这个呢?关闭这个的意思是什么呢?
高手指教!
------解决方案--------------------
当前进程给pi.hProcess和pi.hThread均增加了引用计数。如果本进程不再需要使用该HANDLE,应CloseHandle, 使子进程在退出后及时释放资源。
------解决方案--------------------
这个handle没啥用.如果你在后面不需要waitforsingleobject等待它结束的话
------解决方案--------------------
这个叫“剪断脐带”,当PI.hthread里被填入新进程的主线程句柄时,它的内核引用计数变为2,调用closehandle后减为1,并且使得父进程的线程失去操作子进程的线程的能力。
------解决方案--------------------
调用这个CloseHandle并不意味着结束线程,而是表示不关心此句柄的状态了, 也就无法控制子进程的线程了。如果需要关心,可以在子进程结束后再CloseHandle, 但一定得CloseHandle.