当前位置:   article > 正文

论原子性操作使用场景以及原子类封装_原子操作使用场景

原子操作使用场景

    原子性操作,意思是说CPU执行的过程中,操作的粒度如同原子,不可再细分中途不能被打断。众所周知如今CPU执行程序是分时间片执行的,线程是CPU调度的单位。每一个线程的执行都会分到一个时间片,当线程的时间片用完后,线程挂起等待下次调度,然后在从调度队列中取出其他线程开始执行。                                                                                                                          
    对于多线程程序中,如果有公共资源,多个线程可以并行,就会涉及到一个线程在操作公共资源时,另一线程也开始操作公共资源,造成数据错乱的问题。

    解决办法就是加锁,通过加锁实现了线程对公共资源操作一次的完整性,哪怕操作过程中被打断,也不允许其他线程占有该资源,直到操作完成解锁之后,其他线程才可以再次使用该资源。打个不恰当的比方,公共资源就是火车上的卫生间,A君进入卫生间后,会把门锁上,然后开始办事儿。B君也有需要,但是发现门锁上了没法进去。哪怕A君中途太累睡着了,因为门还锁着,B君还是没法进入的。必须等A君办完事儿,解锁退出卫生间,然后B君才能进入。                                                                           
    因为加锁就会涉及多个线程锁竞争等待情况,加锁的粒度一定要尽量小,不能在公司上公共卫生间就把整间卫生间锁上,这样其他同事都没有办法上卫生间了,只需要将自己需要的那一格子间加锁就好。                                                   

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48526
推荐阅读
相关标签
  

闽ICP备14008679号