多线程


多线程

Linux中锁的种类(自旋锁 临界区 递归锁 悲观锁 乐观锁等)

  • 自旋锁:忙等待锁,适用于锁持有时间短的场景。
  • 临界区:保护共享资源的代码块,防止并发访问。
  • 递归锁:允许同一线程多次加锁,防止死锁。
  • 悲观锁:假设会发生冲突,操作前加锁。
  • 乐观锁:假设不会发生冲突,提交时检查冲突。

条件变量 虚假唤醒

  • 条件变量:用于线程间同步,等待特定条件满足。
  • 虚假唤醒:线程被唤醒但条件未满足,需重新检查条件。

CAS与无锁数据结构(主要是无锁单向链表和ringbuffer)

  • CAS:比较并交换,用于实现无锁数据结构。
  • 无锁单向链表:使用CAS操作实现,避免锁竞争。
  • RingBuffer:环形缓冲区,用于高效数据传输,避免锁竞争。

线程和协程的区别

  • 线程:操作系统调度,开销较大,适用于并发任务。
  • 协程:用户态调度,开销较小,适用于高并发任务。

双缓冲 (Double Buffering)

使用两个缓冲区交替工作,提高数据处理效率。

  • 特点:一个缓冲区用于读操作,另一个缓冲区用于写操作。
  • 适用场景:图形渲染、数据流处理。

内存屏障

防止编译器和CPU重排序,保证内存操作顺序。

  • 特点:确保内存操作按程序顺序执行。
  • 适用场景:多线程编程、并发控制。

可重入与多线程安全的区别

  • 可重入:函数可以被中断后安全地再次调用,不依赖全局状态。
  • 多线程安全:函数在多线程环境下安全执行,防止数据竞争。

文章作者: xucanxx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xucanxx !
  目录