国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

自旋鎖

2019-11-09 19:44:07
字體:
來源:轉載
供稿:網友

自旋鎖(Spin lock)

自旋鎖與互斥鎖有點類似,只是自旋鎖不會引起調用者睡眠,如果自旋鎖已經被別的執行單元保持,調用者就一直循環在那里看是 否該自旋鎖的保持者已經釋放了鎖,"自旋"一詞就是因此而得名。其作用是為了解決某項資源的互斥使用。因為自旋鎖不會引起調用者睡眠,所以自旋鎖的效率遠 高于互斥鎖。雖然它的效率比互斥鎖高,但是它也有些不足之處:    1、自旋鎖一直占用CPU,他在未獲得鎖的情況下,一直運行--自旋,所以占用著CPU,如果不能在很短的時 間內獲得鎖,這無疑會使CPU效率降低。    2、在用自旋鎖時有可能造成死鎖,當遞歸調用時有可能造成死鎖,調用有些其他函數也可能造成死鎖,如 copy_to_user()、copy_from_user()、kmalloc()等。因此我們要慎重使用自旋鎖,自旋鎖只有在內核可搶占式或SMP的情況下才真正需要,在單CPU且不可搶占式的內核下,自旋鎖的操作為空操作。自旋鎖適用于鎖使用者保持鎖時間比較短的情況下。       自旋鎖的用法如下:   首先定義:spinlock_t x; 然后初始化:spin_lock_init(spinlock_t *x);   //自旋鎖在真正使用前必須先初始化 在2.6.11內核中將定義和初始化合并為一個宏:DEFINE_SPINLOCK(x)      獲得自旋鎖:spin_lock(x);   //只有在獲得鎖的情況下才返回,否則一直“自旋”                           spin_trylock(x);  //如立即獲得鎖則返回真,否則立即返回假      釋放鎖:spin_unlock(x);


上一篇:洛谷 P1736 創意吃魚法

下一篇:棧與隊列

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河北区| 郴州市| 雷波县| 措美县| 杂多县| 襄垣县| 临澧县| 建平县| 刚察县| 尼勒克县| 宾川县| 神木县| 石棉县| 池州市| 东丽区| 团风县| 周宁县| 榕江县| 满洲里市| 无棣县| 保山市| 南岸区| 萍乡市| 连江县| 无为县| 南川市| 沁阳市| 阳朔县| 石首市| 广安市| 铜山县| 达拉特旗| 金沙县| 汤原县| 屏东县| 新蔡县| 烟台市| 临湘市| 福建省| 万荣县| 德令哈市|