锁与原子操作及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)
还没有任何评论哟~
