【Linux】线程同步
在Linux中,实现线程同步的常用方法有互斥锁(mutexes)、读写锁(rwlocks)、信号量(semaphores)和事件(conditions)。以下是使用互斥锁实现线程同步的例子:
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int shared_var = 0;
void* thread_function(void* arg) {
while (1) {
pthread_mutex_lock(&mutex);
shared_var++;
printf("Thread: %d\n", shared_var);
pthread_mutex_unlock(&mutex);
sleep(1);
}
return NULL;
}
int main() {
pthread_t thread;
pthread_create(&thread, NULL, &thread_function, NULL);
while (1) {
pthread_mutex_lock(&mutex);
shared_var++;
printf("Main: %d\n", shared_var);
pthread_mutex_unlock(&mutex);
sleep(1);
}
pthread_join(thread, NULL);
return 0;
}
在这个例子中,我们创建了一个线程和一个互斥锁。shared_var
是一个共享资源,由两个线程并发访问。互斥锁用于确保每次只有一个线程可以修改shared_var
。通过使用pthread_mutex_lock
和pthread_mutex_unlock
,我们保证了每次只有一个线程可以执行打印和自增操作。
评论已关闭