首页
社区
课程
招聘
经典问答-C++主线程子线程同时运行
发表于: 2012-4-8 13:12 4441

经典问答-C++主线程子线程同时运行

2012-4-8 13:12
4441
百度来的。原地址http://ilewen.com/questions/3419
问题:怎么在主线程一直运行的情况下,也同时运行其它子线程啊。。。。。主线程不能sleep.涉及到多个共享资源问题。所以不能异步运行
答案:
在你创建一个线程后,这个线程就开始运行了,主线程并没有停。比如MFC中,你的主线程在消息循环中不停的循环,而有一个子线程也有一个循环,不停的用来发送某个消息,那你的程序就在一直的收到消息,因为,这两个线程都在运行!可能你不太理解,一个CPU,怎么运行两个线程呢?OK,先说说你的CPU只有一个核的情况下吧,CPU的计算速度很快,它来回的切换运行主线程与你的子线程,这就给你造成了一种错觉:两个线程在同时运行,其实,在同一时间点,单核的CPU只能运行某一个线程,之所以,多线程一起运行,就是它的速度很快,给你带来的这种错觉就是多线程并行运行!再说说,多核CPU,假设你的CPU有两核,这个时候,主线程和子线程就可以各用一个核在同时运行,这个时候是真真正正的同时在运行着两个线程!关于资源共享,设置一个信号量,或者互斥量,用来控制线程在同一时间点只能有一个线程使用这个资源,在一个线程使用互斥资源的时候,如果另一个线程此时并不使用此资源,那另一线程就是还在运行着,并没有停下,如果另一线程此时要也使用这个互斥资源,那另一线程此时只能处于等待状态了,比如两个线程都想使用打印机,而打印机在某一时间段只能给某一个线程去使用,明白?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
韬哥出现了!!!
2012-4-8 15:09
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
线程同步,罗云彬书上有讲的。
2012-4-8 17:04
0
游客
登录 | 注册 方可回帖
返回
//