使用pthread_mutex_t
时间: 2024-04-12 08:23:59 浏览: 21
pthread_mutex_t是一个线程互斥锁,用于保护共享资源的访问。使用pthread_mutex_t可以确保在同一时间只有一个线程可以访问被保护的资源,从而避免了多个线程同时修改共享资源导致的数据不一致性问题。
使用pthread_mutex_t需要以下几个步骤:
1. 定义一个pthread_mutex_t类型的变量,用于表示互斥锁。
2. 在需要保护共享资源的代码段前后分别调用pthread_mutex_lock和pthread_mutex_unlock函数,以获取和释放互斥锁。
3. 在获取互斥锁之前,如果发现互斥锁已经被其他线程占用,则当前线程会被阻塞,直到互斥锁被释放。
4. 在释放互斥锁之后,其他被阻塞的线程可以继续竞争获取互斥锁。
下面是一个使用pthread_mutex_t的示例代码:
```c
#include <pthread.h>
// 定义互斥锁
pthread_mutex_t mutex;
// 共享资源
int shared_data = 0;
void* thread_func(void* arg) {
// 获取互斥锁
pthread_mutex_lock(&mutex);
// 修改共享资源
shared_data++;
// 释放互斥锁
pthread_mutex_unlock(&mutex);
return NULL;
}
int main() {
// 初始化互斥锁
pthread_mutex_init(&mutex, NULL);
// 创建多个线程
pthread_t thread1, thread2;
pthread_create(&thread1, NULL, thread_func, NULL);
pthread_create(&thread2, NULL, thread_func, NULL);
// 等待线程结束
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
// 销毁互斥锁
pthread_mutex_destroy(&mutex);
return 0;
}
```