真正的互斥锁如何实现的思考

  Java语言里的Lock、synchornized实现了用户透明的获取互斥锁的功能,如果线程有先来后到,没有什么疑问,先来的先拿到锁,后来的等待,如果两个线程同时到达由哪个线程获取?这里的同时是真正意义上的同时,两个线程分别在两个核(假设多个核使用同一个时钟,没有验证过)同一时钟周期上开始获取锁,那由哪个获取锁?猜测这里可以使用操作系统提供的方法cmpxchg,在硬件上当多个核同时执行cmpxchg时,有总线仲裁模块决定哪个核锁总线成功,从而决定哪个核执行的线程获取锁成功。参考知乎回答: https://www.zhihu.com/question/353542624/answer/905449728

posted @ 2020-02-12 16:54  Birding  阅读(615)  评论(0编辑  收藏  举报