【Linux】线程互斥
在Linux中,实现线程互斥的一种常见方式是使用互斥锁(mutex)。下面是使用互斥锁的一个简单例子:
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 初始化互斥锁
void* thread_function(void* arg) {
pthread_mutex_lock(&mutex); // 加锁
// 临界区代码开始
printf("Thread ID: %lu\n", pthread_self());
// 临界区代码结束
pthread_mutex_unlock(&mutex); // 解锁
return NULL;
}
int main() {
pthread_t thread1, thread2;
// 创建线程
pthread_create(&thread1, NULL, &thread_function, NULL);
pthread_create(&thread2, NULL, &thread_function, NULL);
// 等待线程结束
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
在这个例子中,我们定义了一个互斥锁mutex
,并在每个线程的临界区代码前后加上pthread_mutex_lock()
和pthread_mutex_unlock()
来保证同一时刻只有一个线程能进入临界区。这样可以避免多个线程同时执行printf
函数导致的输出混乱或数据竞争问题。
评论已关闭