搜索

ppt文档 hazard pointer synchronous reclamation

856.38 KB 31 页 0 下载 48 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
英语
.pptx
3
摘要
文档详细介绍了 Hazard Pointer 同步回收机制,包括其基本算法、保护器、删除流程以及异步和同步回收的实现细节。 Hazard Pointer 用于保护并发环境中对象的安全访问,确保在对象被移除时不会被意外使用。文档还讨论了异步回收的触发条件、实现步骤以及同步回收的应用场景,强调了在某些情况下同步回收的必要性。
AI总结
### Hazard Pointer 同步回收总结 #### 1. 基本 Hazard Pointer 算法 - **核心作用**:保护可能被并发删除的对象。 - **特性**: Hazard Pointer 是单写多读的指针。如果 Hazard Pointer 指向一个对象,该对象在 Hazard Pointer 未更改前不会被回收。 - **流程**: - 读取指针并检查。 - 如果匹配对象地址,则标记为安全访问。 - 如果不匹配,则清除 Hazard Pointer 并进行对象回收。 #### 2. 异步回收 - **触发条件**: - Folly 库中,当退休对象数量达到阈值(最大值为 1000 或 hazard pointer 数量的两倍)时触发。 - 否则,每 2 秒自动触发一次。 - **实现步骤**: - 从全局域结构中提取退休对象。 - 读取 hazard pointer 值并匹配地址。 - 匹配对象回推到域列表,未匹配对象被回收。 - **特点**: - 限制未回收对象数量约为 hazard pointer 数量。 - 无法保证单个对象的回收时间。 #### 3. 同步回收 - **必要性**: - 在某些场景(如资源清理顺序要求严格时),异步回收无法满足需求。 - **实现**: - 调用 `hazard_pointer_clean_up()` 函数,确保在函数返回前所有未被保护的退休对象被回收。 - **优势**: - 确保对象在调用返回前被回收,避免资源泄漏或使用不可用资源的问题。 #### 4. 使用场景 - **异步回收适用场景**: - 适用于对回收时间不敏感的场景。 - **同步回收适用场景**: - 适用于需要立即回收资源的场景,例如资源清理顺序严格要求时。 #### 5. 总结 - Hazard Pointer 提供了一种高效的并发对象保护机制。 - 异步回收适用于大部分场景,但无法保证实时性。 - 同步回收在特定场景下能够确保对象的及时回收,避免资源问题。 通过结合异步和同步回收机制,可以灵活应对不同的并发编程需求。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 19 页请下载阅读 -
文档评分
请文明评论,理性发言.