日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

原子操作和锁

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原子操作和锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、原子操作

不可被中斷的一個或一系列操作。

二、處理器如何實現原子操作

32位處理器使用基于對緩存加鎖或總線加鎖的方式來實現多處理器之間的原子操作

(1)總線鎖:使用處理器提供一個LOCK#信號,當一個處理器在總線上輸出此信號的時候,其他處理器的請求將被阻塞,那么該處理器可以獨占使用共享內存。舉例:i=7,i++;兩個線程對i++進行操作,那我們最終期望的結果是9,但最終的結果可能是8,那么想要保證讀改寫共享變量的操作是原子操作的,就使用總線鎖,就是說cpu1讀改寫共享變量的時候,CPU2不能操作緩存了該共享變量內存地址的緩存。

總線鎖是把CPU和內存之間通信鎖住了,這使得鎖定期間,其他處理器不能操作其他內存地址的數據,所以總線鎖鎖定的開銷比較大。

(2)緩存鎖定:如果緩存在處理器緩存行中內存區域在LOCK操作期間被鎖定,當它執行鎖操作回寫內存時,處理器不在總線上聲言LOCK#信號,而是修改內部的內存地址,并允許它的緩存一致性機制來保證操作的原子性,因為緩存一致性機制會阻止同時修改被兩個以上處理器緩存的內存區域數據,當其他處理器回寫已被鎖定的緩存行的數據時會起緩存無效,在(1)中的例子,當CPU1修改緩存行中的i時,使用緩存鎖定,那么CPU2就不能同時緩存i的緩存行。

三、原子操作和加鎖機制。

在編寫代碼的時候,能使用原子操作時,就盡量不要使用復雜的加鎖機制。對多數體系結構來說,原子操作與更復雜的同步方法相比較,給系統帶來的開銷小,對高速緩存行的影響也小。但是,對于那些有高性能要求的代碼,對多種同步方法進行測試比較,也是一種明智的方法。

總結

以上是生活随笔為你收集整理的原子操作和锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。