Sleep()的迷惑??
1:
在一个单文档程序中.添加一个菜单项目.Sleep,(IDM_SLEEP),在其响应中添加
{
Sleep(6000);//延迟六秒
}
运行:
点击中,执行Sleep(6000);则在这6秒中,程序好像死机一样,对别的鼠标点击无任何反映.
而孙鑫讲课时说,当主线程Sleep(4000);的这4秒中,CPU执行另外一个线程,程序如下:
#include <windows.h>
#include <iostream.h>
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
);
int index=0;
int tickets=0;
void main()
{
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
// Sleep(4000);
cout<<"main thread is running"<<endl;
}
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
)
{
while(index++<3)
cout<<"thread1 is running"<<endl;
return 0;
}
运行结果
1:无Sleep(4000)时:
main thread is running.
2:有Sleep(4000)时:
thread1 is running
thread1 is running
thread1 is running
main thread is running
这个Sleep(4000)中,可以处理线程1.
而下面:
在一个单文档程序中.添加一个菜单项目.Sleep,(IDM_SLEEP),在其响应中添加
{
Sleep(6000);//延迟六秒
}
为何不行呢,在Sleep(6000)中找个6秒,这个程序好像死机一样,不能响应任何鼠标点击?
孙鑫讲课时说,当主线程Sleep(4000);的这4秒中,CPU执行另外一个线程.
两者似乎有矛盾?这是为什么呢?