【发布时间】:2011-08-31 15:24:26
【问题描述】:
我需要一个满足这些有点不寻常的 (AFAIK) 要求的数据结构:
- 支持的操作有 Insert(set, item)、Delete(set, item) 和 ForAll(set, operation)
- 插入和删除是很少见的操作。该集合通常只包含一项。
- 在 C 中实现必须是可行的;特别是,不会为您收集垃圾。
- ForAll 必须能够安全地执行异步信号处理程序,其调用可能中断了插入或删除。
当然,最后一个要求是杀手锏。我有一个玩具实现,它在全局链表周围抛出一个全局锁,但是如果信号处理程序中断一个关键部分,那将会死锁。
(我知道在信号处理程序中执行 any 代码的所有问题;出于这个问题的目的,让我们专注于如何使 ForAll 崩溃和死锁安全(当它可能发生时)中断了插入或删除。)
【问题讨论】:
标签: c algorithm data-structures concurrency