gpt4 book ai didi

multithreading - "nonblocking"数据结构如何可能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:40:26 25 4
gpt4 key购买 nike

我无法理解任何数据结构如何“非阻塞”。

假设您正在创建一个“非阻塞”哈希表。在某些时候,您的散列表变得太满,因此您必须重新散列到一个更大的表中。

这意味着您需要分配内存,这是一种全局资源。所以看起来您必须获得某种锁以防止堆的全局损坏...不管您的数据结构本身可能存在的问题!
但这意味着在您分配内存时所有其他线程都必须阻塞...

我在这里错过了什么?
(如何)您可以在不阻塞正在执行相同操作的另一个线程的情况下分配内存?

最佳答案

非阻塞设计的两个例子是 optimistic designTransactional Memory .

这样做的想法是——在大多数情况下,阻塞是多余的——因为两个 OP 可以同时发生而不会相互干扰。但是,有时当 2 个 OP 同时发生并且数据因此而损坏时 - 您可以回滚到之前的状态,然后重试。

这些设计中可能仍然存在锁定,但数据锁定的时间明显更短,并且仅限于 OP 影响发生的关键时间。 p>

关于multithreading - "nonblocking"数据结构如何可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com