pthread_mutex_lock和pthread_mutex_unlock作用及例程详解
时间: 2023-08-11 16:35:19 浏览: 256
test_pthread_kill测试程序_
pthread_mutex_lock和pthread_mutex_unlock是用于线程同步的函数。线程同步是指多个线程按照一定的顺序执行,以避免竞态条件和死锁等问题。
pthread_mutex_lock函数用于获取一个互斥锁,如果该互斥锁已经被其他线程占用,则当前线程会被阻塞等待。
pthread_mutex_unlock函数用于释放一个互斥锁,这样其他线程就可以获取这个互斥锁。
下面是使用pthread_mutex_lock和pthread_mutex_unlock进行线程同步的一个简单例程:
```c
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex;
void* thread_func(void* arg) {
pthread_mutex_lock(&mutex);
printf("Thread %d start.\n", *(int*)arg);
sleep(2);
printf("Thread %d end.\n", *(int*)arg);
pthread_mutex_unlock(&mutex);
return NULL;
}
int main() {
pthread_t threads[5];
int thread_args[5] = {1, 2, 3, 4, 5};
pthread_mutex_init(&mutex, NULL);
for (int i = 0; i < 5; i++) {
pthread_create(&threads[i], NULL, thread_func, &thread_args[i]);
}
for (int i = 0; i < 5; i++) {
pthread_join(threads[i], NULL);
}
pthread_mutex_destroy(&mutex);
return 0;
}
```
该例程创建了5个线程,每个线程都会获取互斥锁并输出一些信息。由于互斥锁的存在,每个线程会按照一定的顺序执行,从而避免了竞态条件和死锁等问题。
阅读全文