i只是想知道,假设PC有多内核。三个不同的内核中有三个线程。线程(T1(在Core(C1(中获取了自旋锁,并通过T1获取了锁,同一时间T2和T3螺纹在Core C2和C3中运行,并尝试获取锁定并等待释放锁定。一旦T1螺纹释放锁,哪个线程将获取锁定锁定T2或T3?我正在考虑T2和T3的优先级,并且也在同一时间等待。
Linux内核使用MCS旋转锁。要点是,服务员最终将自己加入队列。但是,如果有两个线程这样做,则无法保证谁将首先成功。
类似地,对于更简单的旋转锁,代码只是试图翻转"取"位,因此无法保证。但是,某些硬件特性可以使其变得比其他硬件的时间比其他核心更轻松(如果它们共享相同的插座(。
您想阅读https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook/perfbook.html
我重复:如果2个不同的线程竞争锁,则没有保证的命令,他们首先要接受它并寻找一个是错误的。