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