7

我很清楚为什么 QMap 是通过 skiplist 数据结构而不是 rb-tree 实现的?有一个非常有趣的SO 线程,关于并发数据结构和跳过列表对 rb-tree 的好处,优点和缺点。它确实是非常有趣的对话,带有有用的链接,但 QMap 不是线程安全的,它不做任何互斥锁来同步访问开箱即用。它需要包装器或子类化。

对我来说,编写“手工制作的”跳过列表而不是 rb-tree 并不简单,所以这也不明显。

在非线程安全的 Qt 容器的上下文中是否有任何终止功能?

提前Tnx。

4

1 回答 1

3

我曾经也认为 QMap 被设计为线程安全的,因此实现为基于跳过列表的字典。显然,这似乎不是原因。它更简单:“可执行文件中的代码更少,每个节点的内存更少。”

事实上,QMap 曾经被实现为 RB-tree。

资料来源:Qt Quarterly 19,“关联容器”部分

于 2012-10-01T11:52:43.570 回答