Linux之线程互斥
warning:
这篇文章距离上次修改已过205天,其中的内容可能已经有所变动。
在Linux中,实现线程互斥的一种常见方式是使用互斥锁(mutex)。下面是一个简单的C语言示例,展示了如何使用互斥锁来保证同一时刻只有一个线程可以访问共享资源。
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 初始化互斥锁
int shared_resource = 0; // 共享资源
void* thread_function(void* arg) {
// 锁定互斥锁
pthread_mutex_lock(&mutex);
// 访问共享资源
shared_resource++;
printf("Thread %lu: %d\n", pthread_self(), shared_resource);
// 解锁互斥锁
pthread_mutex_unlock(&mutex);
return NULL;
}
int main() {
pthread_t threads[5];
for(int i = 0; i < 5; i++) {
pthread_create(&threads[i], NULL, &thread_function, NULL); // 创建线程
}
for(int i = 0; i < 5; i++) {
pthread_join(threads[i], NULL); // 等待线程结束
}
return 0;
}
在这个例子中,我们定义了一个互斥锁mutex
和一个共享资源shared_resource
。每个线程在访问shared_resource
之前都会尝试锁定互斥锁,访问完毕后解锁。这样,同一时刻只有一个线程可以执行shared_resource++
操作,从而保证了数据的一致性。
评论已关闭