能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
如何调试 线程函数
当主线程执行完毕后,进程也就退出了,这时进程中所有的资源,包括还没有执行的线程都要退出,也就是说新创建的线程还没有机会执行就退出了,因此你设的断点当然不会命中。
为了让新创建的线程能够得到执行的机会,就需要使主线程暂停执行,即放弃执行的权利,操作系统就会从等待运行的线程队列中选择一个线程来执行,这时新创建的线程才有执行的机会。
这时你可用Sleep()函数或者WaitForSingleObject()函数。
建议楼主可以结贴了。
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
如何调试 线程函数
摘自《Windows并发编程指南》Page30
“当创建一个新的线程时,你必须指定一组信息,包括线程的起始执行函数等,此后将由Windows内核来接手所有的工作。当创建线程的请求成功返回时,新的线程已经被初始化,并且如果线程在创建后不是处于挂起状态,那么这个线程将被放入到线程队列中,并且随后被调度到处理器上执行。至于线程何时才能在处理器上运行,则要取决于线程调度器、系统负载及可用资源等因素。事实上,当创建线程的请求返回时,新的线程可能已经开始(甚至结束)了运行。”
希望我打了这么多字,你能明白为什么。
|
能力值:
( LV2,RANK:10 )
|
-
-
如何调试 线程函数
WaitForSingleObject(hThread,INFINITE);
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|