无锁编程和基于锁的编程的优缺点是什么?

What're the pros and cons of lock-free programming and lock-based programming?

本文关键字:编程 优缺点 是什么 于锁      更新时间:2023-10-16
我已经使用 C++11

几个月了,我一直很喜欢 C++11 标准库的大多数组件,除了那些与原子操作相关的组件。

在我看来,无锁编程

太复杂而无法正确处理,而基于锁的编程直观且易于理解和遵循。所以,我必须考虑无锁编程的价值。

为了充分理解无锁编程和基于锁的编程,我想知道:

无锁编程

和基于锁的编程的优缺点是什么?

显然,无锁编程可能很难正确。但是,如果其他人做了一些以无锁方式运行的事情(例如队列、列表、向量等),那么使用它显然是一件好事。

锁总是会让事情变慢 - 因为你必须拿起锁,然后对一些共享对象执行你需要做的操作,然后释放锁 - 它不可避免地比使用正确的"无锁"操作做同样的事情花费更长的时间。