Advertisement

锁与原子操作及CAS实现

阅读量:

文章结构概览

  • 线程同步机制
    • 锁机制

      • 互斥锁 mutex
      • 读写锁 rdlock
      • 自旋锁 spinlock
    • 原子操作技术

      • _sync* * 比较并交换 CAS

线程同步

对变量执行增量处理的过程,一般可以划分为三个阶段:

  • 从存储空间中将该变量加载至寄存器
  • 在寄存器内部完成对该变量的加一操作
  • 将更新后的数值重新存入内存区域

若多个线程同时对该变量进行此类增量处理,而未采取同步机制,则最终结果可能偏离预期。例如,两个线程同时获取该变量的初始值,各自完成加一操作后分别写回内存,此时虽然执行了两次增量操作,但实际效果仅相当于一次增量。

实现线程间同步的方式包括使用锁机制以及原子操作。

互斥锁机制与同步控制

<pthread.h>头文件中定义了多种用于互斥锁操作的接口函数,供pthread使用。

复制代码
    /* Initialize a mutex.  */
    int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr);
    /* Destroy a mutex.  */
    int pthread_m

全部评论 (0)

还没有任何评论哟~