C语言 互 pthread_mutex_init
时间: 2023-09-19 20:11:19 浏览: 98
pthread_mutex_init() 函数用于初始化互斥锁(mutex),它的原型如下:
```c
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
```
其中,`mutex` 是一个指向互斥锁对象的指针,`attr` 是一个指向互斥锁属性的指针。如果 `attr` 的值为 NULL,则使用默认的属性初始化互斥锁。
调用该函数后,会对互斥锁进行初始化,使其处于可用状态,可以在需要的地方使用互斥锁来保护临界区。
以下是一个示例代码:
```c
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex; // 定义一个互斥锁
void* thread_func(void* arg) {
pthread_mutex_lock(&mutex); // 加锁
// 临界区
printf("Thread running\n");
pthread_mutex_unlock(&mutex); // 解锁
return NULL;
}
int main() {
pthread_t thread;
pthread_mutex_init(&mutex, NULL); // 初始化互斥锁
pthread_create(&thread, NULL, thread_func, NULL);
pthread_join(thread, NULL);
pthread_mutex_destroy(&mutex); // 销毁互斥锁
return 0;
}
```
上述代码中,我们首先定义了一个互斥锁 `mutex`。在主线程中使用 `pthread_mutex_init()` 初始化互斥锁。然后我们创建了一个线程,在线程函数中加锁、执行临界区操作、解锁。最后,我们使用 `pthread_mutex_destroy()` 销毁互斥锁。
注意,互斥锁应当在使用前进行初始化,并在不再使用时进行销毁,避免出现内存泄漏。
阅读全文