Squid Web Cache Wiki

Squid Web Cache 文档

🔗 StringNg

StringNg 是 Squid 对 String-buffer 的一种表示。

🔗 目标

本次实现工作的目标是增加 Squid 用于字符串操作的基本类型,特别是

🔗 内存管理

🔗 架构概述

三个主要类完成了这项工作。

SBuf 实例与 MemBlob 实例之间存在 N 对 1 的关系:一个 MemBlob 包含多个 SBuf 的数据,这些 SBuf 的数据可能部分或全部重叠。

SBuf 实现写时复制(copy-on-write)以防止别名副作用。提供了常用情况的快捷方式,例如向 SBuf 追加(当 MemBlob 末尾有未使用空间时,不进行 COW),或者当 SBuf 是 MemBlob 的唯一持有者时。

通过调整 MemBlob 的分配策略可以获得内存管理器的友好性。目前的做法是:使用启发式方法来定义分配多少额外空间。负担由 SBuf 和 MemBlob 分担:前者使用 SBuf 本地信息(例如,以复制操作次数表示的 SBuf 生命周期长度),而 MemBlob 处理更底层的优化。

🔗 优化

SBuf(和 StringNg)主要是不可变的。并非所有情况下都必须如此。例如,当 SBuf 拥有 MemBlob 时(即当 MemBlob 的引用计数为 1 时),可以允许更改字符串的部分内容。

🔗 线程安全

线程安全不在本范围内。

导航:站点搜索站点页面类别🔼 向上