2011年12月4日

自旋锁本质

摘要: 自旋锁的实现是靠维护一个16位的整数----slock,该变量是个全局的,所有处理器共享的,汇编代码实现了首先将slock的内容换到每个cpu中维护的一个inc变量中,然后slock+=0x0100,开始的时候,inc的初始值为0x0100,slock的高八位为记录多少进程申请了自旋锁,低八位为标示有多少进程释放了自旋锁。 进程在申请自旋锁时候,首先将slock的内容拷贝到自己的inc变量中,然后增加了0x0100,这样就每次一个进程申请自旋锁,高八位就加1,而进程这样做了后,就比较自己inc的高八位和低八位是不是一样,如果不一样就将slock的第八位拷贝过来反复检测,如果一样说明,可... 阅读全文

posted @ 2011-12-04 12:59 sprzhing 阅读(423) 评论(0) 推荐(0) 编辑

导航