我想通过以下操作使用纯功能数据结构实现环形缓冲区
使用持久数据结构的原因是因为我有一个写程序线程和几个读程序线程,并且我想避免读者阻塞写程序。
通过使读取者线程仅在拍摄快照时才持有该锁,然后使用快照进行处理,可以轻松地做到这一点。
支持这些操作的现有可用数据结构是什么?
在这种情况下,还可以使用其他纯功能数据结构吗?
答案 0 :(得分:5)
finger tree(在标准库中为Data.Sequence
)是持久性随机访问序列的首选。我认为它满足您的条件-随机访问索引为 O(log n)(更具体地说,索引到边缘的距离的对数),其他为 O(1)< / em>。我不知道任何持久性数据结构的性能要比这更好。