linux 锁
linux中有哪几种临界资源访问保护机制
- 互斥锁:核心以pthread_mutex_t为核心
- 自旋锁:核心以pthread_spinlock_t为核心
- 原子操作:自定义C函数封装汇编
各种临界资源保护机制的用法
- pthread_t :在多线程情况下,线程会切换,但是某个线程方法进入以pthread_mutex_t加锁的临界资源
- pthread_spinlock_t:多线程情况下,不会产生线程切换,某个线程进入以pthread_spinlock_t加锁的临界资源时候,线程无法获取锁就会自旋等待,这个pthread_spinlock_t用在操作非常简单,等待时间非常短的情况下。
- 原子操作:在函数内部嵌入asm汇编,用一条汇编指令表达。
i++ 自增操
- i++ 操作:i++操作编译成汇编后,都是三条指令,线程执行任何一个汇编指令时候都可能发生线程切换,多线程情况下不能保证i++是原子操作
1
2
31.move [var],%ebx
2.incr %ebx
3.move %ebx [var]