linux线程锁
时间: 2023-09-27 21:05:51 浏览: 55
Linux中的线程锁主要有两种:互斥锁(mutex)和读写锁(read-write lock)。
互斥锁是一种独占锁,它保证同一时间只有一个线程可以访问共享资源。当一个线程获得了互斥锁后,其他线程必须等待该线程释放锁才能访问共享资源。互斥锁的使用方法如下:
```
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL); // 初始化互斥锁
pthread_mutex_lock(&mutex); // 加锁
// 访问共享资源
pthread_mutex_unlock(&mutex); // 解锁
pthread_mutex_destroy(&mutex); // 销毁互斥锁
```
读写锁是一种非独占锁,它允许多个线程同时读取共享资源,但只允许一个线程进行写操作。当一个线程获得了写锁时,其他线程必须等待该线程释放锁才能访问共享资源;当一个线程获得了读锁时,其他线程也可以获得读锁,但不能获得写锁。读写锁的使用方法如下:
```
pthread_rwlock_t rwlock;
pthread_rwlock_init(&rwlock, NULL); // 初始化读写锁
pthread_rwlock_rdlock(&rwlock); // 加读锁
// 访问共享资源
pthread_rwlock_unlock(&rwlock); // 解锁
pthread_rwlock_wrlock(&rwlock); // 加写锁
// 访问共享资源
pthread_rwlock_unlock(&rwlock); // 解锁
pthread_rwlock_destroy(&rwlock); // 销毁读写锁
```
需要注意的是,互斥锁和读写锁的使用要根据共享资源的特点来选择,不能随意使用,否则会造成资源争用、死锁等问题。