为什么多个并行线程不能同时获取到同一把锁?
来源:11-3 主要内容

林就远
2020-12-01
老师,您好,我有两个问题想请教您一下:
-
为什么多个并行线程不能同时获取到同一把锁?
为什么会提出这个问题呢,是因为我今天仔细想了下。多线程并行执行操作同一共享资源,那么可能会产生线程安全问题。所以这里我们就要用到同步机制,给操作同一共享资源的部分代码进行加锁处理。
可是我能不能这样理解:锁本身就是多个线程之间的共享资源,只有拿到了这把锁才可以进入同步逻辑区域。那么如何保证多线程在并行的情况下,只有一个线程才能拿到这个“共享资源”呢?会不会出现多个线程同时得到这把锁?还是说我把锁看成是多个线程的“共享资源”是有问题的? -
多个线程等待同一把锁,线程获取到锁的机制是什么?
5个线程通过加锁同步机制执行,一个线程获取到了锁,执行完相应代码,释放锁,供其它四个线程获取。那么其它四个线程获取锁的机制是什么?cpu的随机调度吗?还是有相关算法的?
写回答
1回答
-
悟空
2020-12-01
最终到获取同一个锁的时候,都是串行,所以不会出现大家都获得。
有多种算法,你可以搜索一下,线程调度算法。
022020-12-02
相似问题