C语言 应用层互斥锁例子
时间: 2024-10-22 13:19:24 浏览: 22
在C语言中,应用层互斥锁(mutex)通常用于控制对共享资源的并发访问,防止多个线程同时修改同一数据导致的数据一致性问题。下面是一个简单的例子,展示了如何使用`pthread_mutex_t`结构和相应的函数来创建、获取和释放互斥锁:
```c
#include <pthread.h>
// 初始化互斥锁
pthread_mutex_t lock;
void *thread_func(void *arg) {
pthread_mutex_init(&lock, NULL); // 创建一个新的互斥锁
for (int i = 0; i < 5; i++) {
pthread_mutex_lock(&lock); // 尝试获取锁
printf("Thread %d is accessing the shared resource.\n", pthread_self());
// 这里是对共享资源的操作
pthread_mutex_unlock(&lock); // 任务完成后释放锁
}
pthread_mutex_destroy(&lock); // 销毁互斥锁
return NULL;
}
int main() {
pthread_t thread_id;
// 创建并启动新线程
pthread_create(&thread_id, NULL, thread_func, NULL);
pthread_join(thread_id, NULL); // 等待线程结束
return 0;
}
```
在这个例子中,`pthread_mutex_lock`用于锁定互斥锁,只有当锁被成功获取时,对应线程才能访问共享资源;`pthread_mutex_unlock`则是在操作结束后释放锁,让其他等待的线程有机会进入临界区。
阅读全文