自旋锁
使用情景
与mutex read-write lock barrier condition不同的是自旋锁在等待锁的过程中不会休眠,正是因为这点不同,它与其它锁的使用情况不太一样,自旋锁主要是用在内核中,中断函数是不允休眠的,在用户层用的比较少一些,因为它一直运行着,浪费CPU,而且持锁的线程如果休眠了,待待的线程需要等待的时候更久。
数据结构
pthread_spinlock_t
常用操作
int pthread_spinlock_init(pthread_spinlock_t *lock,int pshared);
int pthread_spinlock_destroy(pthread_spinlock_t *lock);
这个锁没有对attr的操作,直接把pshared的功能和初始化弄到了一起
int pthread_spinlock_lock(pthread_spinlock_t *lock);
int pthread_spnlock_trylock(pthread_spinlock_t *lock);
int pthread_spinlock_unlock(pthread_spinlock_t *lock);
使用的时候有一点要注意,当我们获取到自旋锁之后就不要再执行可能导致休眠的操作了,否则会让其它等待这个锁的线程白白的浪费CPU。