#include <windows.h>
#include <iostream.h>DWORD WINAPI Fun1Proc(
  LPVOID lpParameter   // thread data
);void main()
{
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
Sleep(10);
cout<<"main Thread!<<endl;
}DWORD WINAPI Fun1Proc(
  LPVOID lpParameter   // thread data
)
{ cout<<"thread1 is running"<<endl;
return 0;
}请问主线程的这个Sleep(10),10ms一到,cpu立即返回主线程执行吗??而不管线程1如何(假设线程1这个函数执行要1秒)

解决方案 »

  1.   

    不是的,是10ms后主线程恢复到ready状态。然而Windows不是实时系统,所以其实主线程在规定的时间被唤醒的可能性并不能保证。
    如果一定要切换到某一个线程,可以用SwitchToThread
      

  2.   

    请问主线程的这个Sleep(10),10ms一到,cpu立即返回主线程执行吗??而不管线程1如何(假设线程1这个函数执行要1秒)理论上是这样,不过实际上可能稍微查一点点,理由正如楼上所说。
      

  3.   

    不是的 主线程Sleep(10)一到表示主线程进入就绪可调度状态,会和线程1(假设还没有结束)以及系统其他程序的线程竞争cpu而已,是不能保证sleep后一定就执行主线程的