Skip to content

Latest commit

 

History

History
11 lines (6 loc) · 770 Bytes

126、C++多线程加锁,会劣化性能,请问有什么优化的手段?.md

File metadata and controls

11 lines (6 loc) · 770 Bytes

126、C++多线程加锁,会劣化性能,请问有什么优化的手段?

  1. 合理设计程序:尽量减少加锁的次数,把多个操作放到一个加锁的代码段中,减少加锁的次数。

  2. 使用原子操作:C++11提供了一些原子操作,比如atomic_compare_exchange_strong()等,可以用来替代锁,在某些场合可以有效提高性能。

  3. 使用锁的粒度更小的技术:比如读写锁、条件变量等,可以替代普通的互斥锁,减少锁的粒度,提高性能。

  4. 使用锁的粒度更大的技术:比如使用全局锁、细粒度锁等,可以减少锁的粒度,提高性能。

  5. 使用非阻塞技术:比如CAS操作,可以避免线程之间的阻塞,从而提高性能。