初学线程的一个小问题! - 奥博IT资讯
来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:42:25
void main()
{
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
Sleep(10);//
}
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
)
{ cout<<"thread1 is running"<
}
不加Sleep(10). 运行结果:空.
加上Sleep(10)后 运行结果:thread1 is running
书中说:
Sleep(10)让主线程暂停运行10秒,使其放弃执行的权利,操作系统就选择线程1执行;
当该线程1运行完成后或者10ms间隔时间已经过去, 主线程就恢复运行,main()函数退出.
问题:
当该线程1运行完成后,或者10ms间隔时间已经过去, 主线程就恢复运行,main()函数退出.
//我觉得这两句有问题?
单单线程1运行完成后,主线程并不是立即就恢复运行,得等10ms后主线程恢复运行,main()函数退出
应该为:
1:线程1在主线程的等待的10ms时间内已经结束. 则:得等10ms后恢复运行,main()函数退出.
2:线程1在主线程的等待的10ms时间内没结束,则:在主线程的10ms后,主线程最先被CPU执行的时候,main()函数退出.
各位我理解的对吗?
问题2:
我把Sleep(10),改为Sleep(0);按理说,不等待,等待时间为0,与不加Sleep(0)时一样,可结果还是先执行Thread 1.
----------------------------------------------------------------------
主线程退出的时候会强制结束子线程。但是实际上无法保证主线程在Sleep10秒之后立即就能运行。
Sleep(0)是有特殊意义的,虽然线程并不休眠,但是会交出时间片,由系统调配下一个等待线程运行。
搂主可以参考下 Windows核心编程
--------------------------------------------------------
Sleep之后线程就已经暂停了(就是交出时间片)
参数只是暂停多长时间
--------------------------------------------------------
每条sleep()语句最少会消耗时间大概(20~50ms),根据系统状况不同可能有所不一样
就向上面几位说的,因为sleep引起的暂停使得其他事件得以执行
初学线程的一个小问题! - 奥博IT资讯
请教线程监控的问题
品牌的英语含义-奥博虚拟校园
一个小问题? 一个小故事!
“敏思群组”一个值得关注的SNS-敏思,群组,SNS,草根网IT资讯精读(20ju.com)
Servlet线程安全相关问题
做一个健康快乐人-奥博虚拟校园
初学ASP编程易犯的致命问题及解决办法
关于初学ASP.NET技术的学习顺序问题
关于初学ASP.NET技术的学习顺序问题
初学主板维修应注意的问题及学习方法
关于冷僻会计科目“库存股”的一个小问题
一个老IT的心里话
初学葫芦丝问题集锦 2(小蝌蚪音乐学习网)
线程的使用
线程的使用
国学资讯 - 马军:梁漱溟婚姻中的两个小问题 -
初学驾车“八项注意”-资讯频道-驾驶员考试
你所不注意的Windows XP的5个小秘密-Windows频道-中国IT实验室-技术·资讯·教育·服务·社区
网民眼中的2009年中国互联网----------------IT资讯
怎样培养学生良好的记忆品质-奥博虚拟校园
晨便,是健康的开始-奥博虚拟校园
一个简短的epoll服务器示例, 监听5000个端口, 使用线程池 - 趋势创造者-祗偽妳...
浏览器问题小锦囊之解决IE常见故障 - hao12358 电脑秘笈大全 IT知识 IT技术...