|
|
1
1
|
|
2
0
这是常识。这不是延迟大小的问题。自旋锁是一种忙碌等待,因此只有在您无法以其他方式等待的情况下才必须考虑它。当您处于无法等待进程的状态时。当您运行硬件中断时,通常会中断与您所代表的设备驱动程序没有共同上下文的正在运行的进程。更详细地说,您可能必须阻塞一些资源,因为使用驱动程序资源的进程实际上可以在另一个处理器中运行,并且可以使用这些资源。因此,在检查了这种情况后,您只有一种可能性,即在紧循环上运行,同时等待其他cpu(以及处理共享驱动程序资源的进程)终止对它们的访问。这是需要自旋锁的典型场景。 当unix(和linux)无法运行多处理器时,就不需要使用自旋锁,正如您决定的(在单线程中)何时以及如何中断。保护中断代码和主驱动程序代码之间共享资源的机制是在访问共享资源之前阻止中断(来自设备驱动程序主代码),并在访问公共资源之后重新启用中断。从中断代码来看,没有必要阻塞资源,因为设备的中断会自动被阻塞,直到您能够继续而不阻塞资源,然后您可以重新启用中断。但一旦代码可以在不同的处理器上运行,就失去了这种限制,必须考虑自旋锁。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 8 月前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 8 月前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 9 月前 |
|
|
Elektito · 变量地址不在/proc/self/maps中的堆栈范围内 10 月前 |