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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

我对CopyOnWrite的思考

發布時間:2024/9/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我对CopyOnWrite的思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

CopyOnWrite 后文中表述為 COW

CopyOnWrite容器即寫的時候復制一個新的容器進行寫:通俗的理解是當我們往一個容器添加元素的時候,不直接往當前容器添加,而是先將當前容器進行Copy,復制出一個新的容器,然后在新的容器里添加元素,添加完元素之后,再將原容器的引用指向新的容器。

為什么要這么做?

我們需要了解到一個異常叫做:ConcurrentModificationException。通常對容器進行并發的讀和寫的時候會出現該異常,比如說foreach遍歷List的時候往其中add元素。

了解到ConcurrentModificationException異常后,我們就可以結合COW進行思考,如果寫操作的時候不復制一個容器,仍然是之前的容器,那么此時并發的讀操作就是對之前容器進行的操作,一個容器在被讀的時候,又被另外一個線程進行了寫操作,會報出上述錯誤。

所以CopyOnWrite容器也是一種讀寫分離的思想,讀和寫不同的容器,不會發生ConcurrentModificationException異常

COW帶來的好處!

可以對CopyOnWrite容器進行并發的讀,而不需要加鎖,因為當前容器不會添加任何元素。

對比Concurrent容器

  • 最大的優勢就是COW容器在被寫的時候,仍然是可以讀的。而Concurrent容器在寫的時候,不能讀。
  • 不足1:COW容器在寫入的時候會進行內部容器的復制,所以內部實現上多了一份核心數據的拷貝賽所需的資源,可以理解為:拿空間換時間
  • 不足2:COW容器僅僅保證了數據的最終一致性,Concurrent容器保證了數據隨時的一致性。

適用場景

  • 對數據在操作過程中的一致性要求不高
  • 根據上述不足1進行分析可以得出:更適用于讀大于寫的場景。換言之COW容器中保存的數據應該是盡可能不變化的。

轉載于:https://www.cnblogs.com/LiuChunfu/p/8476650.html

總結

以上是生活随笔為你收集整理的我对CopyOnWrite的思考的全部內容,希望文章能夠幫你解決所遇到的問題。

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