zl程序教程

并发数据结构-1.4 池

  • 据结构 Linux下实现高效的并发数据结构(linux并发数)

    据结构 Linux下实现高效的并发数据结构(linux并发数)

    Linux系统是用于实现高效的并发数据结构的理想平台。虽然现在的Linux系统中存在一定的性能瓶颈,但也正是因为这些性能瓶颈,搭建了Linux系统所具有的极强的适应性,从而使其成为实现高效并发数据结构的最佳选择。考虑到实现效果,以下是一些Linux下实现高效的并发数据结构的有效方法。 首先,在Linux下要实现高效的并发数据结构,必须要使用多线程技术。在 Linux中,多线程编程有两种方式,一

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.5 链表

    并发数据结构-1.5 链表

    原文链接,译文链接,译者:huavben,校对:周可人 考虑支持插入,删除和查找操作的并发数据结构实现。如果这些操作只处理键值(译者注:而不处理具体值),这样的数据结构会是一个集合。如果一个数据值与每一个键关联起来,我们就得到了一部数据字典。由于他们都是密切相关的数据结构,一个并发的集合通常能够经过适当修改来实现一部字典。在接下来的三个小节中,我们将专注于利用linked lists,hash

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.4 池

    并发数据结构-1.4 池

    原文链接,译文链接,译者:huavben,校对:周可人 实现高效并发栈和队列的大部分挑战来自于一个被插入的元素可以被删除这一需求。并发池是一种支持插入和删除操作的数据结构,它允许删除操作移除任何一个已经被插入的,并且没有在随后被删除的元素。这样的弱需求提供了提高并发性能的机会。 一个高效的并发池可以使用任意静态一致的计数器来构建。在这样的并发池中,元素被置于数组当中,fetch-and-inc

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.6 哈希表

    并发数据结构-1.6 哈希表

    原文链接,译文链接,译者:iDestiny,校对:周可人 典型可扩展的哈希表即一个可调整大小的桶数组(buckets), 每一个桶存放预期数量的元素,因此哈希表平均在常量时间内进行插入,删除,查询操作。哈希表调整大小的主要成本—–在于新旧桶(buckets)之间进行重新分配操作,该操作被分摊到所有表操作上,所以平均操作时间也是常量的。哈希表调整大小就是扩容,在实践中,哈希表仅需要增加数组大小即可

    日期 2023-06-12 10:48:40     
  • 并发数据结构- 1.8 优先队列&1.9 总结

    并发数据结构- 1.8 优先队列&1.9 总结

    原文链接,译文链接,译者:郭振斌,校对:周可人 1.8 优先队列 并发的优先队列是一个可线性化到顺序优先队列的数据结构,能够通过常用的优先队列语义提供insert和delete-min操作。 基于堆的优先队列 许多文献中提到的并发优先队列结构,其实是本书前面提到的可线性化堆结构。再一次的,这种结构的基本思想是在个别堆节点上使用细粒度锁,使线程在并行下也能够尽可能的访问数据结构的不同部分。设

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.4 复杂度测量&1.1.5 正确性

    并发数据结构-1.1.4 复杂度测量&1.1.5 正确性

    原文链接,译文链接,译者:张军,校对:周可人 1.1.4 复杂度测量 一个被广泛研究的方向是在理想化模型,如并行随机存取机上分析并发数据结构和算法的渐进复杂度[35, 122, 135]。然而,很少有将这些数据结构放在一个真实的多处理器上进行建模的。这里有多种原因,大部分原因跟系统硬件架构与线程异步执行的相互作用有关。想想组合树(combining tree)的例子,虽然我们能通过计算(指令数

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.3 非阻塞技术

    并发数据结构-1.1.3 非阻塞技术

    原文链接,译文链接,译者:Noodles,校对:周可人 1.1.3 非阻塞技术 正如前面讨论的那样,非阻塞实现主要目的是为了消除由锁带来的相关问题,为了形式化研究这一概念,多种非阻塞演进条件已经在相关文献有所研究了,如wait-freedom演进条件,lock-freedom演进条件,和obstruction-freedom演进条件。满足wait-free演进条件的操作是指在执行自身包含的有限

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.2 阻塞技术

    并发数据结构-1.1.2 阻塞技术

    原文链接,译文链接,译者:周可人,校对:梁海舰 1.1.2 阻塞技术 在很多数据结构中,内存竞争所带来的不良现象和前文所说的顺序瓶颈带来的影响都可以通过使用细粒度锁机制来减小。在细粒度锁机制中,我们用多个粒度较小的锁来保护数据结构中的不同部分。这样做的目的是允许并发操作在它们不访问数据结构的相同部分时并行执行。这种方法也可以用于避免独立内存位置访问的额外竞争。在一些数据结构中,这种现象经常发生

    日期 2023-06-12 10:48:40     
  • 并发数据结构- 1.1.1 性能

    并发数据结构- 1.1.1 性能

    原文链接,译文链接,译者:俞升兵,校对:周可人 1.1.1 性能 一个运行在P个处理上的应用程序的加速度是它在单个处理器上的执行时间和在P个处理器的执行时间的比值。这是一种评价应用程序对于机器资源利用程度的衡量。理想情况下,我们想要的结果是线性加速度:当我们使用P个处理器的时候,我们希望可以获得P的加速度(译者注:例如一个应用程序在单处理器的执行时间是10秒,那么在双处理的执行时间理想情况下是

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1 并发的数据结构的设计

    并发数据结构-1.1 并发的数据结构的设计

    原文链接,译文链接,译者:董明鑫,校对:周可人 随着多个处理器共享同一内存的机器在商业上的广泛使用,并发编程的艺术也产生了巨大的变化。当前的趋势向着低功耗芯片级多线程(CMT)发展,所以这样的机器一定会更加广泛的被使用。 共享内存多处理器是指并发的执行多个线程的系统,这些线程在共享的内存中通过数据结构通讯和同步。这些数据结构的效率对于性能是很关键的,而目前熟练掌握为多处理器机器设计高效数据结构

    日期 2023-06-12 10:48:40     
  • 招募译者翻译并发数据结构

    招募译者翻译并发数据结构

    什么是并发数据结构? 引用wiki上的定义 In computer science, a concurrent data structure is a particular way of storing and organizing data for access by multiple computing threads (or processes) on a computer. 简而言之,

    日期 2023-06-12 10:48:40     
  • 【转载】并发数据结构

    【转载】并发数据结构

    请首先参考:http://shift-alt-ctrl.iteye.com/blog/1839142 一.BlockingDeque阻塞双端队列(线程安全): 注意ArrayDeque和LinkedList仅仅扩展了Deque,是非阻塞类型的双端队列。 BlockingQueue单向队列,其内部基于ReentrantLock + Condition来控制同步和"阻塞"/"唤醒"的时机;有如下

    日期 2023-06-12 10:48:40     
  • 并发数据结构

    并发数据结构

    《Concurrent Data Structures》(并发数据结构)一文是Mark Moir和Nir Shavit所撰写的一篇有关并发数据结构的综述性文章。这篇文章从多核处理器基础开始,理清了并发数据结构的基础设计理念和技巧,介绍了数据结构算法相关的正确性证明,并列举了栈,链表,队列,树等常用并发数据结构的设计思路。 为了促进大家对并发数据结构基础概念的了解,并发编程网组织译者翻译该论文。由

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.5 链表

    并发数据结构-1.5 链表

    原文链接,译文链接,译者:huavben,校对:周可人 考虑支持插入,删除和查找操作的并发数据结构实现。如果这些操作只处理键值(译者注:而不处理具体值),这样的数据结构会是一个集合。如果一个数据值与每一个键关联起来,我们就得到了一部数据字典。由于他们都是密切相关的数据结构,一个并发的集合通常能够经过适当修改来实现一部字典。在接下来的三个小节中,我们将专注于利用linked lists,hash

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.4 池

    并发数据结构-1.4 池

    原文链接,译文链接,译者:huavben,校对:周可人 实现高效并发栈和队列的大部分挑战来自于一个被插入的元素可以被删除这一需求。并发池是一种支持插入和删除操作的数据结构,它允许删除操作移除任何一个已经被插入的,并且没有在随后被删除的元素。这样的弱需求提供了提高并发性能的机会。 一个高效的并发池可以使用任意静态一致的计数器来构建。在这样的并发池中,元素被置于数组当中,fetch-and-inc

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.6 哈希表

    并发数据结构-1.6 哈希表

    原文链接,译文链接,译者:iDestiny,校对:周可人 典型可扩展的哈希表即一个可调整大小的桶数组(buckets), 每一个桶存放预期数量的元素,因此哈希表平均在常量时间内进行插入,删除,查询操作。哈希表调整大小的主要成本—–在于新旧桶(buckets)之间进行重新分配操作,该操作被分摊到所有表操作上,所以平均操作时间也是常量的。哈希表调整大小就是扩容,在实践中,哈希表仅需要增加数组大小即可

    日期 2023-06-12 10:48:40     
  • 并发数据结构- 1.8 优先队列&1.9 总结

    并发数据结构- 1.8 优先队列&1.9 总结

    原文链接,译文链接,译者:郭振斌,校对:周可人 1.8 优先队列 并发的优先队列是一个可线性化到顺序优先队列的数据结构,能够通过常用的优先队列语义提供insert和delete-min操作。 基于堆的优先队列 许多文献中提到的并发优先队列结构,其实是本书前面提到的可线性化堆结构。再一次的,这种结构的基本思想是在个别堆节点上使用细粒度锁,使线程在并行下也能够尽可能的访问数据结构的不同部分。设

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.4 复杂度测量&1.1.5 正确性

    并发数据结构-1.1.4 复杂度测量&1.1.5 正确性

    原文链接,译文链接,译者:张军,校对:周可人 1.1.4 复杂度测量 一个被广泛研究的方向是在理想化模型,如并行随机存取机上分析并发数据结构和算法的渐进复杂度[35, 122, 135]。然而,很少有将这些数据结构放在一个真实的多处理器上进行建模的。这里有多种原因,大部分原因跟系统硬件架构与线程异步执行的相互作用有关。想想组合树(combining tree)的例子,虽然我们能通过计算(指令数

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.3 非阻塞技术

    并发数据结构-1.1.3 非阻塞技术

    原文链接,译文链接,译者:Noodles,校对:周可人 1.1.3 非阻塞技术 正如前面讨论的那样,非阻塞实现主要目的是为了消除由锁带来的相关问题,为了形式化研究这一概念,多种非阻塞演进条件已经在相关文献有所研究了,如wait-freedom演进条件,lock-freedom演进条件,和obstruction-freedom演进条件。满足wait-free演进条件的操作是指在执行自身包含的有限

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1.2 阻塞技术

    并发数据结构-1.1.2 阻塞技术

    原文链接,译文链接,译者:周可人,校对:梁海舰 1.1.2 阻塞技术 在很多数据结构中,内存竞争所带来的不良现象和前文所说的顺序瓶颈带来的影响都可以通过使用细粒度锁机制来减小。在细粒度锁机制中,我们用多个粒度较小的锁来保护数据结构中的不同部分。这样做的目的是允许并发操作在它们不访问数据结构的相同部分时并行执行。这种方法也可以用于避免独立内存位置访问的额外竞争。在一些数据结构中,这种现象经常发生

    日期 2023-06-12 10:48:40     
  • 并发数据结构- 1.1.1 性能

    并发数据结构- 1.1.1 性能

    原文链接,译文链接,译者:俞升兵,校对:周可人 1.1.1 性能 一个运行在P个处理上的应用程序的加速度是它在单个处理器上的执行时间和在P个处理器的执行时间的比值。这是一种评价应用程序对于机器资源利用程度的衡量。理想情况下,我们想要的结果是线性加速度:当我们使用P个处理器的时候,我们希望可以获得P的加速度(译者注:例如一个应用程序在单处理器的执行时间是10秒,那么在双处理的执行时间理想情况下是

    日期 2023-06-12 10:48:40     
  • 并发数据结构-1.1 并发的数据结构的设计

    并发数据结构-1.1 并发的数据结构的设计

    原文链接,译文链接,译者:董明鑫,校对:周可人 随着多个处理器共享同一内存的机器在商业上的广泛使用,并发编程的艺术也产生了巨大的变化。当前的趋势向着低功耗芯片级多线程(CMT)发展,所以这样的机器一定会更加广泛的被使用。 共享内存多处理器是指并发的执行多个线程的系统,这些线程在共享的内存中通过数据结构通讯和同步。这些数据结构的效率对于性能是很关键的,而目前熟练掌握为多处理器机器设计高效数据结构

    日期 2023-06-12 10:48:40     
  • 并发数据结构

    并发数据结构

    一.BlockingDeque阻塞双端队列(线程安全): 注意ArrayDeque和LinkedList仅仅扩展了Deque,是非阻塞类型的双端队列。 BlockingQueue单向队列,其内部基于ReentrantLock + Condition来控制同步和"阻塞"/"唤醒"的时机;有如下几个实现类: ArrayBlockingQueue: “浮动相对游标”的数组,来实现有界的阻塞队列。

    日期 2023-06-12 10:48:40     
  • 并发编程 — 并发数据结构--转载

    并发编程 — 并发数据结构--转载

    并发编程系列文章:       初解线程池:http://ray-yui.iteye.com/blog/2072463       详解线程池:http://ray-yui.iteye.com/blog/2075311     

    日期 2023-06-12 10:48:40