【问题标题】:thread safe search-and-add线程安全的搜索和添加
【发布时间】:2012-07-23 20:29:22
【问题描述】:

我需要能够做到以下几点:

  1. 搜索链接列表。
  2. 将新节点添加到列表中以防找不到。
  3. 线程安全并使用 rwlock,因为它主要读取列表。

我遇到的问题是,当我从 read_lock 提升到 write_lock 时,我需要再次搜索列表,以确保在我执行持有 read_lock 的列表搜索时,其他线程没有等待 write_lock。

是否有其他方法可以在不进行双重列表搜索(可能是某种 seq_lock)的情况下实现上述目标?

【问题讨论】:

    标签: linux thread-safety linked-list kernel


    【解决方案1】:

    将链表转换为有序链表。当需要添加新节点时,您可以通过仅检查两个节点而不是搜索整个列表来再次检查其他写入者是否在您获取锁时添加了等效节点。您将在每个节点插入上花费更多时间,因为您需要确定新节点的排序顺序,但您无需搜索整个列表即可节省时间。总的来说,您可能会节省很多时间。

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2015-11-29
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2011-04-01
      • 2017-07-29
      • 2023-03-24
      • 2021-01-24
      相关资源
      最近更新 更多