UINT Thread_Play(LPVOID pParam)
{
return 0;
}
void CMy555Dlg::OnButton1() 
{
int aa=GetTickCount();
AfxBeginThread(&Thread_Play,NULL);
TRACE1("%d ms\n",GetTickCount()-aa);
}按OnButton1后,输出60ms, 请问,为什么启动一个线程需要60多ms时间啊?

解决方案 »

  1.   

    你得到的并不是启动线程的时间。
    AfxBeginThread(&Thread_Play,NULL);
    后线程是否启动是由cpu决定的。你应该在线程函数内再取时间,然后去减你的aa。
    不过这也不代表线程启动的时间间隔。要看你的机器的cpu在什么时间给启动的线程分配执行时间
      

  2.   

    你用GetTickCount函数得到的是从第一次调用到第二次调用的间隔时间但线程创建以后,你不能确定你的函数没有被挂起而运行了线程的函数,所以说不能证明AfxBeginThread运行的时间如果想证明,应该在创建线程的时候将线程挂起。