-
-
[求助]如何有效的关闭有循环操作线程的内核对象
-
发表于: 2009-12-9 12:01 3342
-
unsigned int __stdcall myThreadFun(LPVOID lpParameter) { for(int i=0;i<10;i++) { printf("%d\n", 2); Sleep(1000); } return 0; } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { for(int i=0;i<5;i++) { HANDLE myHH = (HANDLE)_beginthreadex(NULL, 0, myThreadFun, NULL, 0, 0); CloseHandle(myHH); printf("myHH:%d\n", myHH); Sleep(1000*2); } getchar(); return 0; }
这段代码在运行后内核对象的计数只会增加,不会减少。但是如果修改成
unsigned int __stdcall myThreadFun(LPVOID lpParameter) { // for(int i=0;i<10;i++) // { // printf("%d\n", 2); // Sleep(1000); // } printf("%d\n", 2); return 0; } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { for(int i=0;i<5;i++) { HANDLE myHH = (HANDLE)_beginthreadex(NULL, 0, myThreadFun, NULL, 0, 0); CloseHandle(myHH); printf("myHH:%d\n", myHH); Sleep(1000*2); } getchar(); return 0; }
就没有问题了。
像这样对于第一种情况,一个有循环操作的线程,如何再完成线程以后有效的关闭内核对象呢?
(不能用WaitForSingleObject等待结束,因为同一时间还需要其他的操作)
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
他的文章
看原图
赞赏
雪币:
留言: