在软件中,事务性内存方案是多线程编程的一种操作过程,它使用的事务与数据库使用的事务非常相似。当两个或多个线程试图同时访问同一数据时,许多不同的不良情况可能导致程序的结果取决于线程访问顺序。通常需要一个顺序,在...
在软件中,事务性内存方案是多线程编程的一种操作过程,它使用的事务与数据库使用的事务非常相似。当两个或多个线程试图同时访问同一数据时,许多不同的不良情况可能导致程序的结果取决于线程访问顺序。通常需要一个顺序,在多线程中,锁是确保一次只有一个线程可以访问特定资源的最主要和最简单的方法。手持计算机这种事务性内存的方法在多线程处理中包含与锁有关的多个问题。如果发生某种意外错误,锁可能会成为永久性的,锁会带来不可预测的并发问题,比如死锁或优先级反转,由于锁的粒度非常细,另一个问题包括代码最终在锁定、上下文切换和,和解锁。这是一个关键问题,因为它可能导致代码在这些操作上花费的时间比在程序中执行其他重要工作上的时间要长。相反,粗粒度锁会导致处理性能下降和并发性降低。事务内存中的问题由高级锁解决,包括来自C#的“锁块”、读写锁、写屏障等。事务性内存的主要优先事项之一是没有锁,也没有不必要的锁处理时间。通常认为,如果操作不需要互斥,共享的数据结构就没有锁。数据结构事务内存一致性与一致性(TCC)模型是一种新的、被提出的共享内存模型根据该模型,原子事务始终是以下基本单元:并行工作、内存一致性、通信和内存引用的一致性。TCC模型还通过消除使用标准锁或信号量的同步,简化了并行软件。通过硬件,TCC还结合了每一次写入从事务发生的每个区域到一个数据包,以原子方式将数据包广播到永久共享的内存状态。除了简化的一致性硬件外,这意味着所需的低休眠消息减少,并且完全消除了某些标准一致性协议
-
发表于 2020-08-07 18:12
- 阅读 ( 975 )
- 分类:电脑网络