努力就能成功,这句话少了前提:选对了方向,选对了方向你就一定能成功嘛? 坚持+努力+方向(80%)+运气 = 成功
并发的起源
一张图片引发的并发问题
两个不同的cpu操作的是不同的程序,所以他们之间不存在并发的问题
思考:两个不同的cpu操作的是同一个程序中的数据段信息,这时候会发生什么样的问题呢?
答案:会导致数据紊乱的问题
数据紊乱的过程
cpu1和cpu2同时对这个变量做+1的操作,按照正常的情况通过cpu的两次加法操作以后变量的值是3
可能cpu1和cpu2同时执行读1放入寄存器,然后对值进行+1操作,然后将寄存器中的值写入内存,所以可能导致最后的值为2
总结:并发就是多个CPU同时操作可读可写的数据信息,才会导致并发的问题
如何解决上述的数据紊乱问题?
产生数据紊乱的原因是由于汇编代码会根据cpu的调用而穿插执行,导致数据紊乱。(穿插执行是非原子性的)
原子性:一段操作要么全部执行,要么全部不执行,就是将一段操作定义为一个操作
解决办法
锁总线的方法
cpu提供一种锁总线的机制,但是这种操作是不合理的,因为所有的操作都是与内存做交互的,如果你所有的操作都是通过锁总线的方式来完成,那么是不是会误伤很多不操作当前数据的cpu,而导致白白浪费他们的资源和算力