main(){
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(5000);
}
在创建线程后,就关闭了他的句柄,使他的引用计数减一。问题是:创建时引用计数是一吗?
关闭句柄后,计数为零。他不就退出了吗?后面不管Sleep多久,线程都不运行了。
我的想法肯定是错的,但不知错哪了?请赐教!!!!
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(5000);
}
在创建线程后,就关闭了他的句柄,使他的引用计数减一。问题是:创建时引用计数是一吗?
关闭句柄后,计数为零。他不就退出了吗?后面不管Sleep多久,线程都不运行了。
我的想法肯定是错的,但不知错哪了?请赐教!!!!
解决方案 »
- 串口通信同步异步问题
- 消息响应优先级问题
- Flash做的UI界面上的控件,如何实现点击一下控件,就可以播放视频
- 请教PRJ0019错误, 编译ffdshow的时候碰到的
- listctrl中sortitems的问题
- 如何让一个文本框有记忆功能?象GOOGLE一样的搜索框。紧急等待中。。。
- _variant_t
- 我在使用 CStringArray::RemoveAll()方法的时候 有时候会出现错误,不知道使什么原因?
- 如何保存一个指定的超文本链接(已获得其IHTMLAnchorElement)到剪贴板(不一定要用剪贴板,如果可以直接用IDM_COPY也可以)
- COM如何入门?
- 使用gif89这个控件出现的问题
- 使用CSrollView()后,CView::GetClientRect()得到的结果总是与实际值小,不只是何原因
创建后即关闭线程的HANDLE确实使线程的HANDLE引用数下降到0,
但线程还在运行,Kernal32不会强行杀死一个线程的,即使它的引用数降到0,所以不会退出.以上写法正确,楼主多虑了.
并给予它一个线程handle时,你只不过是表示,你希望自己
和此核心对象不再有任何瓜葛,CloseHandle()唯一做的事情
就是把引用计数减1, 如果该值变成0, 对象会自动被操作系统摧毁.CreateThread属进程所有,非线程所有当线程正在执行时候,线程对象处于未激发状态, 当线程结束时,
线程对象被激发了.
调用CreateThread成功之后引用计数为2
不知道对不对!!!!