兩個指令好像運行的時候差不多,優缺點也相似,那有什么區別呢?
uj5u.com熱心網友回復:
這兩個指令的確實相似,操作原子,忙式等待,都是需要硬體支持的,在實作上,swap需要兩個引數,不需要回傳值,而test_and_set則是需要借助一個共享變數來實作互斥,具體的實作細節不需要考慮,但是大體的設計方向是一致的。此外,在多處理器的計算機中,tsl指令是比較常見的,他可以實作多處理器的互斥,執行tsl指令的CPU會鎖住記憶體總線,在這次的指令周期,準確的說,應該是在本次指令執行結束之前,不允許其他CPU訪問記憶體。
至于swap指令,你可以想一下,這條指令的本質是一把鑰匙開一把鎖,那如果存在多把鎖的時候呢?多把鎖鎖住的變數相同或者不同呢?
兩個指令所做的事情是一樣的,但是由于指令的設計,導致他們所能做的事情是有所差別的。
就如數學中:A和B的交集不為空,但是A又不等于B
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/46237.html
標籤:非技術區
上一篇:帶寬問題,亟待大神幫忙
