如下创建一个线程的程序:
HANDLE hThread = CreateThread(NULL,0,AThread,&conn,0,NULL);
if(hThread != NULL)
{
CloseHandle(hThread);
}
我的理解是:在创建HANDLE hThread = CreateThread(NULL,0,AThread,&conn,0,NULL);后,AThread就开始执行,而后面的CloseHandle(hThread);是将线程的引用记数减一,
这样当AThread中return 0后,线程结束,整个线程就不再占用资源了。
在下的疑问是if(hThread != NULL)是不是要等AThread执行完后才执行?还是马上就能
执行?
在下初学,希望各位相助。
HANDLE hThread = CreateThread(NULL,0,AThread,&conn,0,NULL);
if(hThread != NULL)
{
CloseHandle(hThread);
}
我的理解是:在创建HANDLE hThread = CreateThread(NULL,0,AThread,&conn,0,NULL);后,AThread就开始执行,而后面的CloseHandle(hThread);是将线程的引用记数减一,
这样当AThread中return 0后,线程结束,整个线程就不再占用资源了。
在下的疑问是if(hThread != NULL)是不是要等AThread执行完后才执行?还是马上就能
执行?
在下初学,希望各位相助。
不会等待线程执行完毕。
创建线程之后执行该句判断,如果为空关闭Hanlde.
but if you use AfxBegineThread(),you need not closeHandle,MFC do it for you!
(my english is poor!but my computer can't use English. sorry)
MessageBox("主线程结束");辅助线程如下:
::Sleep(5000);
AfxMessageBox("辅助线程开始");大家说说 是先出现“主线程结束”对话框 还是先出现“辅助线程开始”对话框。
天知道是什么结果
——————————————————————————
先结束线程后CLOSEHANDLE,先CLOSEHANDLE后结束线程是一样的。
天知道是什么结果我同意这句话,微软肯定对自己的context switch算法保密。
if(hThread != NULL)
{
CloseHandle(hThread);
}/////////////////
从以上代码看,好象hThread这个句丙并没有任何作用呀。。
仅仅起到判断线程创建成功与否而已。。