Linux--线程的互斥
在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) {
int i;
for(i = 0; i < 5; i++) {
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];
int i;
for(i = 0; i < 5; i++) {
pthread_create(&threads[i], NULL, &thread_function, NULL);
}
for(i = 0; i < 5; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
在这个例子中,我们创建了一个互斥锁mutex
和一个共享资源shared_resource
。每个线程在操作共享资源之前先加锁,然后执行操作,打印当前的资源值,并在操作完成后解锁。这确保了同一时刻只有一个线程可以访问shared_resource
。
评论已关闭