线程同步——互斥锁

来源:互联网 发布:数据统计网站模板 编辑:程序博客网 时间:2024/05/23 09:47

Linux系统提供了互斥锁来保证某个时刻只有一个线程使用资源。
互斥锁提供了在多线程情况下相互排斥的办法。

互斥锁的锁定和解锁是通过pthread_mutex_lock函数和pthread_mutex_unlock函数来实现的。
互斥锁一般用来保护数据结构,通过线程对互斥锁的锁定和解锁,能够实现某一时刻只有一个线程访问该数据结构。

创建互斥锁

创建互斥锁 pthread_mutex_init函数来实现互斥锁的初始化

pthread_mutex_t mylock;
pthread_mutex_init(&my_lock, NULL);

NULL表示使用默认属性。初始化后,互斥锁处于解锁的状态。

互斥锁的加锁

pthread_mutex_lock函数用于互斥锁进行加锁操作。

int pthread_mutex_lock(pthread_mutex_t *mutex);

mutex的锁类型
PTHREAD_MUTEX_NORMAL:不提供死锁的检测,因此加锁有可能出现死锁;对一个没有加锁的互斥锁进行解锁操作,将导致不可预测的行为。
等等。。

0 0