为了账号安全,请及时绑定邮箱和手机立即绑定

同一时刻只能有一条线程在CPU上执行?

1.我们所学习多线程不就是为了让多条线程并发在服务器上执行,加快处理某些业务的等待时间吗,可章节4-2中3:06说的观点怎么感觉不对劲呢。

2.再提一个问题,多线程执行的过程中,每一条线程执行的速度效率都不一致才是导致数据被破坏的原因吧

http://img1.sycdn.imooc.com//5a97ad1d00016c2715220819.jpg

正在回答

2 回答

第一个问题:并发时的时刻其实指的是某个很短的时间,当系统只有一个内核时,系统在某个时刻确实只能执行一个线程,大多数系统都用的是时间片轮换算法,就是多个进程在分配到的极短时间片轮流使用CPU,详情可以看看计算机操作系统这类书,都有具体介绍

第二个问题,按照我的理解是这样的,用这个举例吧

 http://img1.sycdn.imooc.com//5a97b5c5000185c005580327.jpg



正确执行时:

线程1:c=5000,a=5000;a=a+500=5500;c=a

线程2: c=5500;c=c+900=6400,结果是6400

争用时:

线程1:c=5000,a=5000;a=a+500=5500;

线程2:c=5000;c=c+900=5900;

线程1:c=a,结果是5500

线程2与线程1争用资源,导致c损失900;


2 回复 有任何疑惑可以回复我~
#1

qq_陪Alice度过漫长岁月 提问者

万分感谢!看你的回答按照你的思路再走一遍就通了。 这里的意思就是当 线程A没有执行完毕,线程B就load共享对象了 如果线程B执行速度稍快,那么线程B执行完后,A才走到将改变值写会当前变量的时候 那么共享变量这时候的两个操作,最终值就和业务对不上了 刚刚饶进去了,赞一个!
2018-03-01 回复 有任何疑惑可以回复我~

没有看懂

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

同一时刻只能有一条线程在CPU上执行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信