2015-04-02 46 views
-1

在一个4处理器系统中,三个处理器中的哪一个(所有三个处理器正在旋转以获取自旋锁)将获取第四个处理器发布的自旋锁?哪个处理器会获得自旋锁?

+0

除非你有类似门票锁的东西,否则无法知道。此外,如果有一种方法可以知道某个特定的平台,则不同的平台不一定具有相同的内存排序,所以“4处理器系统”太模糊。 – Damon 2015-04-02 11:53:29

+0

[哪个处理器可能会获得螺旋锁?](http://stackoverflow.com/questions/29413987/which-processor-will-acquire-the-spinlock) – Damon 2015-04-02 13:58:11

+0

我已删除重复的帖子,以便继续作为查询的独奏帖子。 – Madara 2015-04-06 08:46:58

回答

2

在一个简单的自旋锁中它是不确定的。测试自旋锁释放后的第一个处理器将获得它。这可能会导致饥饿,当一个进程永远不会获得锁时,因为在等待进程继续获取它之后请求锁的进程。出于这个原因,处理器时间的繁忙等待大多数操作系统的时间并不意味着这样的自旋锁。 Windows具有排队的旋转锁定,而Mac OS X和Solaris使用自适应互斥锁。