English 中文(简体)
什么是“lock锁”?
原标题:What exactly are "spin-locks"?
  • 时间:2009-12-24 08:34:20
  •  标签:
  • spinlock

我总是想知道他们是什么:我每次听到他们的话时,像假象的飞轮式装置的图像会跳舞(滚动吗?) 页: 1

是什么?

最佳回答

当你使用固定锁(左侧、关键科等)时,操作系统把你放在西澳大利亚群岛州,preventions,将其他read放在同一个核心。 如果等待时间确实很短,那就可处以罚款,因为现在,你必须等待先发制人,再次获得万国邮联。

此外,油轮的每一个州都无法提供油轮物体,例如打断手或没有管道等。

Spinlocks不会造成先发制人,而是坐在一只 lo(“pin子”)中,直至其他核心释放。 这使得read无法失去其quantum,并在24小时被释放后立即继续。 简单的缝.机制使一个炉子能够在几乎所有国家加以利用。

因此,在一个单一的核心机器上,一个锁.只是一个“可拆卸的中断”或“可拆解的IRQL”,从而无法完全安排。

锁定最终使油轮能够避免“Big Kernel Lock”(核心进入油轮并在撤离时释放的锁定)和 gr锁,使多芯机器的多处理更加完善,从而提高性能。

www.un.org/Depts/DGACM/index_spanish.htm 有人提出一个问题:“这意味着我应尽可能使用锁套吗?”

正如我提到的那样,只有在预期等候时间少于一定数量的地方(即:微秒),先发制人才有意义(例如,有油轮物体)。

如果等候时间不明,或者如果你重新采用用户模式,则关卡就没有效率。 在检查是否有锁时,你消耗了100%的CPU时间。 你阻止其他read子在你满下方。 这种假设只适用于在煤油层进行短距离环流,不可能选择使用权。

这里有一个关于SO的问题,涉及:Spinlocks, How Useful Are they?

问题回答

一种资源受到24小时的read子的保护,这种read子想要首先获得资源。 如果没有锁,如果锁已经解除,便会反复检查。 在此期间,read忙地等待,使用CPU检查锁,但没有做任何有益的工作。 这种锁被称作头锁。

满足某种条件所需的休息时间是:

while(cantGoOn) {};
 while(something != TRUE ){};
 // it happend
 move_on();

pin子是可到24小时的read子。 通常,在一定时期内购买油轮物体的范围很大的情况下,这样做将用来避免获取油轮物体的间接费用。

While(SpinCount-- && Kernel Object is not free)
{}

try acquiring Kernel object

如果你认为进入繁忙的等候通道和汇集资源,而不是在资源被锁定时阻止资源,那么你就希望使用一个牢牢。

当24小时被罚款、数量众多(例如,在相关名单上每小时24小时)以及24小时的间隔时间总是极其短时,轮椅就是有益的。 总的来说,在关上锁锁时,应当避免堵塞,指出自己可能阻挡的任何东西,同时保持不止一个钟点,发出有活力的信号(接口和虚拟),将静态的电话发送到任何代码上,或分配记忆。

还必须指出,SpinLock是一种价值类型,因为业绩原因。 因此,必须非常谨慎地避免意外地复制SpinLock案,因为这两种情况(原件和副本)将完全相互独立,可能导致申请的错误行为。 如果必须环绕SpinLock案,则应参照而不是按价值进行。

在满足条件之前,它是一种 lo。

在腰果中,lock锁使用原子比较和互换(CAS)或像指示一样的测试和定型,以便免费、免费地等待安全分流。 这种结构在多芯机器中大大扩展。

确实,“是”——锁定点(传统的关键部分等)是,它们在某些情况下(多分系统)提供了更好的业绩,因为它们不会立即产生 rest子的其余部分。

Spinlock, is a category of lock, which is non-blockable & non-sleep-able. 任何想要为任何共享或关键资源取得锁定锁的通道都将不断铺设,在获得特定资源之前,将CPU处理周期拖到24小时。 一旦获得lock锁,它就试图按数量完成工作,然后分别释放资源。 锁定是最优先的锁定类型,只能说是非预防性锁。





相关问题
spin_lock on non-preemtive linux kernels

I read that on a system with 1 CPU and non preemtive linux kernel (2.6.x) a spin_lock call is equivalent to an empty call, and thus implemented that way. I can t understand that: shouldn t it be ...

How is spin lock implemented under the hood?

This is a lock that can be held by only one thread of execution at a time. An attempt to acquire the lock by another thread of execution makes the latter loop until the lock is released. ...

Cross-platform and cross-process atomic int writes on file

I m writing an application that will have to be able to handle many concurrent accesses to it, either by threads as by processes. So no mutex es or locks should be applied to this. To make the use of ...

Alternative to spinlock

I am using the following spinlock approach: while(!hasPerformedAction()){ //wait for the user to perform the action //can add timer here too } setHasPerformedAction(false); return ...

什么是“lock锁”?

我总是想知道他们是什么:我每次听到他们的话时,像假象的飞轮式装置的图像会跳舞(滚动吗?) 页: 1

热门标签