pthread_mutex_lock使用示例
时间: 2024-10-16 19:15:28 浏览: 40
`pthread_mutex_lock`是POSIX线程库(pthread)中的一个重要函数,用于锁定一个互斥锁(mutex),以保证在同一时间只有一个线程能访问共享资源。以下是一个简单的使用示例[^1]:
```c
// 初始化全局互斥锁
static pthread_mutex_t gMutex = PTHREAD_MUTEX_INITIALIZER;
// 当需要保护某个临界区时,调用锁操作
void thread_function_odd(void* arg) {
pthread_mutex_lock(&gMutex);
printf("Odd function executing...\n");
// 这里是执行对共享资源的操作...
printf("odd:1\n"); // 示例操作
pthread_mutex_unlock(&gMutex); // 执行完毕后解锁
}
void thread_function_even(void* arg) {
pthread_mutex_lock(&gMutex);
if (arg == NULL) { // 假设arg表示是否是偶数线程
printf("Even function executing with odd flag...\n");
// 对于偶数线程,可能会有其他操作...
printf("even:0\n"); // 示例操作
} else {
printf("Even function executing...\n");
// 其他偶数线程操作...
}
pthread_mutex_unlock(&gMutex);
}
```
在这个例子中,`thread_function_odd()`和`thread_function_even()`两个线程会尝试争夺同一个互斥锁。只有当持有锁的线程释放锁时,其他线程才能获得并进入其临界区。
阅读全文