zoukankan      html  css  js  c++  java
  • CopyOnWrite 策略

    CopyOnWrite 是用于解决并发读写的一种策略,在Write的时候对共享变量进行Copy,在副本上进行更新,再把更新好的副本原子性地替换原来的共享变量。写入时复制是一种优化策略,多个调用者同时访问一份资源(内存或硬盘上的数据)时,它们会获取相同的指针访问同一份资源,直到某个调用者想修改资源内容时,系统会复制出一份副本给给调用者。

    实现:

    • 读操作Read不涉及对共享变量的更改,因此不需要同步。
    • 如果有多个线程同时申请Write,在各自拷贝的副本上进行修改,然后更新回共享变量,就会导致某些线程的修改被其他线程覆盖。因此Write必须在同步的情况下进行。

    优缺点:

    • 由于修改是在副本上进行,所以修改的同时允许其他线程进行读。
    • 由于需要进行拷贝,当然会存在内存占用的问题。
    • 由于在进行写的过程中仍然允许读,所以数据不是实时一致的,只有在写完成后才一致,也就是最终一致。如果需要实时的一致性,建议使用读写锁。

    CopyOnWrite 策略适用于那些读远多于写、且对实时性要求不高的操作,优势在读不需要同步。

    Java中CopyOnWriteArrayList容器类,就是符合写入时复制思想的CopyOnWrite容器。

     https://coderbee.net/index.php/concurrent/20140308/830

  • 相关阅读:
    PERL 学习
    javascript
    Netfilter
    PHP内核探索
    Linux内存管理学习笔记 转
    使用mysqladmin ext 了解MySQL运行状态 转
    在ArcGIS Desktop中进行三参数或七参数精确投影转换
    AE 栅格图分级渲染
    ArcEngine标注和注记
    ArcGIS Engine 线段绘制
  • 原文地址:https://www.cnblogs.com/doit8791/p/9164212.html
Copyright © 2011-2022 走看看