请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么多个并行线程不能同时获取到同一把锁?

老师,您好,我有两个问题想请教您一下:

  1. 为什么多个并行线程不能同时获取到同一把锁?
    为什么会提出这个问题呢,是因为我今天仔细想了下。多线程并行执行操作同一共享资源,那么可能会产生线程安全问题。所以这里我们就要用到同步机制,给操作同一共享资源的部分代码进行加锁处理。
    可是我能不能这样理解:锁本身就是多个线程之间的共享资源,只有拿到了这把锁才可以进入同步逻辑区域。那么如何保证多线程在并行的情况下,只有一个线程才能拿到这个“共享资源”呢?会不会出现多个线程同时得到这把锁?还是说我把锁看成是多个线程的“共享资源”是有问题的?

  2. 多个线程等待同一把锁,线程获取到锁的机制是什么?
    5个线程通过加锁同步机制执行,一个线程获取到了锁,执行完相应代码,释放锁,供其它四个线程获取。那么其它四个线程获取锁的机制是什么?cpu的随机调度吗?还是有相关算法的?

正在回答 回答被采纳积分+3

1回答

悟空 2020-12-01 17:53:29

最终到获取同一个锁的时候,都是串行,所以不会出现大家都获得。

有多种算法,你可以搜索一下,线程调度算法。

0 回复 有任何疑惑可以回复我~
  • 提问者 林就远 #1
    “最终到获取同一个锁的时候,都是串行”这句话怎么理解?最终到获取同一个锁是串行?
    是线程获取锁的过程是串行的意思吗?那是通过什么来保证线程获取锁是串行的呢?
    回复 有任何疑惑可以回复我~ 2020-12-01 18:12:58
  • 悟空 回复 提问者 林就远 #2
    通过CPU总线等的通信
    回复 有任何疑惑可以回复我~ 2020-12-02 00:33:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信