#include<stdio.h>
#include<pthread.h>
pthread_mutex_t mutex;
int val;
void* Fun(void *arg)
{
int i=0,temp=0;
while(i<50000)
{
pthread_mutex_lock(&mutex);
temp=val;
temp++;
val=temp;
pthread_mutex_unlock(&mutex);
i++;
}
}
int main()
{
pthread_mutex_init(&mutex,NULL);
pthread_t phid1,phid2,phid3;
pthread_create(&phid1,NULL,Fun,NULL);
pthread_create(&phid2,NULL,Fun,NULL);
pthread_create(&phid3,NULL,Fun,NULL);
pthread_join(phid1,NULL);
pthread_join(phid2,NULL);
pthread_join(phid3,NULL);
printf("val=%d\n",val);
pthread_mutex_destroy(&mutex);
}
linux线程实现互斥锁
最新推荐文章于 2024-04-23 22:00:00 发布
该代码示例展示了在C语言中如何使用pthread库进行多线程编程,并通过互斥锁mutex保证线程安全。创建了三个线程,每个线程执行一个循环,对共享变量val进行递增操作。通过加锁和解锁确保同一时间只有一个线程能修改val,防止数据竞争问题。
摘要由CSDN通过智能技术生成