国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

java - Cas操作會加鎖嗎

瀏覽:129日期:2024-01-12 09:39:59

問題描述

java - Cas操作會加鎖嗎

問題:(1)不需要cas操作來加鎖和解鎖,這個怎么理解??cas操作不是如果比較不成功那么就一直嘗試嗎?和加鎖有什么關系??這個該如何理解

問題解答

回答1:

compare and swap操作不一定不需要鎖,看平臺,但是大多數平臺都是支持無鎖cas的。最簡單的鎖是通過test and set實現的自旋鎖,當然通過cas也可以實現。

自旋鎖在上鎖失敗時的確會不斷嘗試,耗盡cpu資源。如

while (flag.test_and_set()) { /* yield; */ } // 上鎖flag.clear(); // 解鎖

系統接口提供的鎖,上鎖失敗時一般會掛起線程,類似

while (flag.test_and_set()) { flag.wait_for_unlock_signal(); } // 上鎖

這里的wait_for_unlock_signal()是個假想函數。但是上鎖依然依賴類似cas的原子操作。也就是說,現在鎖都是通過一些基本的原子操作來實現的,如test and set和compare and swap。

標簽: java
相關文章:
主站蜘蛛池模板: 英德市| 和静县| 奉新县| 东乡县| 法库县| 临城县| 道孚县| 崇信县| 徐闻县| 瑞昌市| 洪雅县| 大姚县| 天祝| 巨鹿县| 巴中市| 宜都市| 阳朔县| 苍南县| 山阴县| 饶平县| 文化| 防城港市| 西乌珠穆沁旗| 图木舒克市| 洛浦县| 福州市| 赫章县| 崇礼县| 乌鲁木齐县| 太谷县| 桦南县| 扎赉特旗| 郁南县| 连平县| 南召县| 壶关县| 景洪市| 闻喜县| 平阳县| 南阳市| 乳源|