首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
经典问答
发新帖
1
0
经典问答-C++主线程子线程同时运行
发表于: 2012-4-8 13:12
4471
经典问答-C++主线程子线程同时运行
邓韬
9
2012-4-8 13:12
4471
百度来的。原地址
http://ilewen.com/questions/3419
问题:怎么在主线程一直运行的情况下,也同时运行其它子线程啊。。。。。主线程不能sleep.涉及到多个共享资源问题。所以不能异步运行
答案:
在你创建一个线程后,这个线程就开始运行了,主线程并没有停。比如MFC中,你的主线程在消息循环中不停的循环,而有一个子线程也有一个循环,不停的用来发送某个消息,那你的程序就在一直的收到消息,因为,这两个线程都在运行!可能你不太理解,一个CPU,怎么运行两个线程呢?OK,先说说你的CPU只有一个核的情况下吧,CPU的计算速度很快,它来回的切换运行主线程与你的子线程,这就给你造成了一种错觉:两个线程在同时运行,其实,在同一时间点,单核的CPU只能运行某一个线程,之所以,多线程一起运行,就是它的速度很快,给你带来的这种错觉就是多线程并行运行!再说说,多核CPU,假设你的CPU有两核,这个时候,主线程和子线程就可以各用一个核在同时运行,这个时候是真真正正的同时在运行着两个线程!关于资源共享,设置一个信号量,或者互斥量,用来控制线程在同一时间点只能有一个线程使用这个资源,在一个线程使用互斥资源的时候,如果另一个线程此时并不使用此资源,那另一线程就是还在运行着,并没有停下,如果另一线程此时要也使用这个互斥资源,那另一线程此时只能处于等待状态了,比如两个线程都想使用打印机,而打印机在某一时间段只能给某一个线程去使用,明白?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
收藏
・
1
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
windowsa
雪 币:
183
活跃值:
(55)
能力值:
( LV3,RANK:20 )
在线值:
发帖
11
回帖
305
粉丝
0
关注
私信
windowsa
2
楼
韬哥出现了!!!
2012-4-8 15:09
0
邋遢鬼
雪 币:
31
活跃值:
(48)
能力值:
( LV3,RANK:20 )
在线值:
发帖
19
回帖
527
粉丝
0
关注
私信
邋遢鬼
3
楼
线程同步,罗云彬书上有讲的。
2012-4-8 17:04
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
邓韬
9
265
发帖
1670
回帖
520
RANK
关注
私信
他的文章
[原创]再见,看雪论坛,这一次是永远!
17566
[求助]更改文章标题怎么还要扣KX?
11711
[分享]根据国外的开源B树写了一份C++版本。
8619
[原创]去掉标题免得被喷......
7239
[讨论]以前搞360,现在搞百度?
4751
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部