C语言 互斥锁用法举例
时间: 2023-10-28 18:31:52 浏览: 106
以下是一个使用互斥锁的简单示例:
#include <stdio.h>
#include <pthread.h>
int count = 0;
pthread_mutex_t mutex;
void *increment(void *arg) {
int i;
for (i = 0; i < 1000000; i++) {
pthread_mutex_lock(&mutex);
count++;
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main() {
pthread_t thread1, thread2;
pthread_mutex_init(&mutex, NULL);
pthread_create(&thread1, NULL, increment, NULL);
pthread_create(&thread2, NULL, increment, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
pthread_mutex_destroy(&mutex);
printf("Count: %d\n", count);
return 0;
}
在此示例中,我们创建了一个名为“count”的全局变量和一个互斥锁变量“mutex”。我们使用两个线程并行地增加计数器“count”的值。
在每个线程的主体中,我们使用pthread_mutex_lock函数获取互斥锁,然后增加计数器的值,最后使用pthread_mutex_unlock函数释放互斥锁。
通过使用互斥锁,我们确保每个线程不会同时访问共享资源(计数器),从而避免了竞争条件和数据不一致的问题。最后,我们输出计数器的值以检查它是否正确增加。
阅读全文