上篇|说说无锁[Lock-Free]编程那些事

来源:未知 浏览 277次 时间 2021-04-22 20:52

1. 介绍

现代计算机甚至小型智能机器或平板电脑都是多核(cpu)处理设备。如何充分利用多核CPU资源最大化单个机器的性能已经成为我们的代码的农民。软件开发的难点和困难。在多核服务器立花里子bt都是多核(cpu)处理设备。如何充分利用多核CPU资源最大化单个机器的性能已经成为我们的代码的农民。软件开发的难点和困难。在多核服务器使用多个进程或线程并行处理任务已经成为标准的性能调优的解决方案。多进程多线程并行编程方法必须面对访问共享数据的问题。如何同时访问共享数据资源高效和安全已成为一个重要的和并行编程的难点。

上篇|说说无锁(Lock-Free)编程那些事

所以人们开始研究数据结构和算法的并发访问共享数据通常在以下方面:

1”。事务内存——事务内存

上篇|说说无锁(Lock-Free)编程那些事

3。无锁数据结构——无锁数据结构

' ' '

(1)事务内存TM是一种软件技术简化了并发程序的准备。TM利用的概念最初是在数据库中建立和发展社区。基本的想法是声明代码区域作为一个事务。自动执行一个事务提交所有结果内存(如果交易成功)或中止、取消所有结果(如果事务失败)。TM是提供的关键元素的原子性、一致性和隔离。安全事务可以并行执行替换现有的痛苦和容易出错(以下几点)技术如锁和信号量。还有一个潜在的性能优势。我们知道锁是悲观和假设锁定的线程将写入数据所以其他线程被阻塞的进程。然而两个事务访问锁定值可以并行执行和事务的回滚只发生在一个写数据。然而目前还没有嵌入式事务内存这是难以与传统集成代码需要软件相对较大的变化。同时软件TM性能开销非常高菏泽网站快速排名软件TM性能开销非常高2 - 10倍速度下降是普遍的这也限制了因为软件的广泛使用TM

1”。竞态条件(竞争条件)由于忘记使用锁

2。死锁(僵局)造成不正确的锁定序列

3。未捕获的异常导致程序崩溃(腐败)

4。线程通常不能醒来(失去了唤醒)因为忽略了通知的错误

”“

(3)无锁数据结构。

标签: netfree18www