zoukankan      html  css  js  c++  java
  • CopyOnWrite 个人理解以及应用

    缘由

    最近在看《Redis 设计与实现》,看到Redis的执行bgsave生成dump.rdb是根据CopyOnWrite
    之前也不是很懂为啥要有CopyOnWrite这个东西
    翻看文章搞明白了

    如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。优点是如果调用者没有修改该资源,就不会有副本(private copy)被建立,因此多个调用者只是读取操作时可以共享同一份资源

    之前一直觉得CopyOnWrite很鸡肋.


    现在解释一下:
    CopyOnWrite就是不同的线程操作不同的资源,最后再整合,因此是线程安全的,但不能保证强一致性

    比如我现在数据 1234 我要插入5

    那么原来的线程看到的数据是 1234 我新开的线程看到的数据是 12345
    并且CopyOnWriteList中的setadd 方法都是加锁了的,所以至多有一份拷贝。当这份拷贝资源执行完后,才会释放锁,进行下次的setadd方法

    参考博客

    CopyOnWriteArrayList

  • 相关阅读:
    Java提高学习之Object(5)
    cmd命令。
    CacheView。
    快速界面:QML。
    抓包工具。
    打包安装程序。
    AS:加载新版本的SWF文件。
    as自定义菜单。
    as [Frame]元标签
    转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11063994.html
Copyright © 2011-2022 走看看