给一个pthread_mutex_lock使用的例子
时间: 2023-06-06 08:08:54 浏览: 172
好的,下面是一个简单的pthread_mutex_lock使用例子:
```
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex;
void* thread_function(void* arg) {
pthread_mutex_lock(&mutex); // 获取锁
printf("线程已被锁住\n");
// 在这里添加一些需要保护的代码
pthread_mutex_unlock(&mutex); // 释放锁
printf("线程已被解锁\n");
return NULL;
}
int main() {
pthread_t thread;
pthread_mutex_init(&mutex, NULL); // 初始化锁
pthread_create(&thread, NULL, &thread_function, NULL);
// 在这里添加一些代码,可以与子线程并发执行
pthread_join(thread, NULL);
pthread_mutex_destroy(&mutex); // 销毁锁
}
```
在这个例子中,我们首先定义了一个全局的pthread_mutex_t类型的变量mutex来表示锁。我们需要在主函数中调用pthread_create函数创建另一个线程,并传入线程函数thread_function。
在线程函数中,我们首先调用pthread_mutex_lock函数来获取锁,然后在锁中加入需要保护的代码,最后调用pthread_mutex_unlock函数来释放锁。调用pthread_mutex_lock函数后,其他进程将无法获取该锁,直到我们调用pthread_mutex_unlock函数释放锁。
在主函数中,我们还可以加入一些需要和子线程并发执行的代码。然后通过调用pthread_join函数等待子线程完成,最后调用pthread_mutex_destroy函数销毁锁。
阅读全文