我想为非POD数据类型编写无锁代码;即非平凡的可毁类和非平凡的可建类。
您可能可以将指向对象的指针排入队列,而不是对象的副本。指针是POD类型,可以简单地构造和破坏。
当然,您需要管理实际对象的构造和销毁,但这些通常是本地操作,不会遇到并发问题。
为了演示一些在设计无锁数据结构中所使用到的技术,我们将看到一些无锁实现的简单数据结构。这里不仅要在每个例子中描述一个有用的数据结构实现,还将使用这些例子的某些特别之处来阐述对于无锁数据结构的设计。 如之前所提到的,无锁结构依赖与原子操作和内存序及相关保证,以确保多线程以正确的顺序访问数据结构。最初,所有原子操作默认使用的是memory_order_seq_cst内存序;因为简单,所以使用(所有me
本章主要内容 设计无锁并发数据结构 无锁结构中内存管理技术 对无锁数据结构设计的简单指导 上一章中,我们了解了在设计并发数据结构时会遇到的问题,根据指导意见指引,确定设计的安全性。对一些通用数据结构进行检查,并查看使用互斥锁对共享数据进行保护的实现例子。第一组例子就是使用单个互斥量来保护整个数据结构,但之后的例子就会使用多个锁来保护数据结构的不同部分,并且允许对数据结构进行更高级别的并发访问。 互
基于锁的并发数据结构设计,需要确保访问线程持有锁的时间最短。对于只有一个互斥量的数据结构来说,这十分困难。需要保证数据不被锁之外的操作所访问到,并且还要保证不会在固有结构上产生条件竞争(如第3章所述)。当你使用多个互斥量来保护数据结构中不同的区域时,问题会暴露的更加明显,当操作需要获取多个互斥锁时,就有可能产生死锁。所以,在设计时,使用多个互斥量时需要格外小心。 在本节中,你将使用6.1.1节中的
问题内容: 我是Java的新手,我试图找到一种方法来在C语言中存储诸如结构之类的信息。例如,说我想让一名程序雇用员工。它将从用户那里获得一个名字,姓氏和ID号并将其存储起来。然后,用户可以根据条件查看该信息(例如,如果数据库有多于1名员工)。有没有人建议这样做的最佳方法? 问题答案: C中的结构就像Java中的类一样,功能更强大,因为Java中的类可以包含方法,而C ++可以。您创建一个新类。例如
本章中的例子中,看到了一些复杂的代码可让无锁结构工作正常。如果要设计自己的数据结构,一些指导建议可以帮助你找到设计重点。第6章中关于并发通用指导建议还适用,不过这里需要更多的建议。我从例子中抽取了几个实用的指导建议,在你设计无锁结构数据的时候就可以直接引用。 7.3.1 指导建议:使用std::memory_order_seq_cst的原型 std::memory_order_seq_cst比起其
本文向大家介绍结构化,半结构化和非结构化数据之间的差异,包括了结构化,半结构化和非结构化数据之间的差异的使用技巧和注意事项,需要的朋友参考一下 在大数据方面,我们知道它处理大量数据及其执行。简而言之,我们可以说大数据是一种处理大量数据的事物,并且由于数据量如此之大,因此从广义上讲,根据数据的组织方式定义了三类,即结构化,半结构化和非结构化数据。 现在,根据组织数据的级别,我们可以发现这三种类型的数