Copy-on-Write模式Copy-on-Write模式:不是延时策略的COW

在操作系统和编程领域中充斥这大量的CoW。linux的进程fork,redis扩容时候的cow策略,以及java中的CopyOnWriteArrayList和CopyOnWriteArraySet等。

JAVA中的CoW

我们在面试会经常问List或者Set的线程安全的替代方案是什么?Vector但是Vector性能不高,性能高的替代方案是什么呢?就是CopyOnWriteArrayList和CopyOnWriteArraySet。

Cow容器的缺点:

  1. 因为在修改时候会复制整个容器,所以是以牺牲内存为代价的
  2. 因为复制容器所以在访问时候会有一定的时延。

Cow的原理和使用场景

在读取数据的时候共享,在修改的时候会开始复制,并且为了保证线程安全可能会在复制时候采取阻塞策略。使用场景读多写少。

额外的思考

redis的cow的扩容机制