linux多线程入门(二)互斥量

当多个线程访问一个共享的变量的时候是非常危险的,可能会拿到错误的数据或者程序崩溃!

所以为了安全的使用线程引入了互斥量的做法

两个互斥量的函数为

pthread_mutex_lock(pthread_mutex_lock* lock)
pthread_mutex_unlock(pthread_mutex_lock* lock)

具体使用也很简单

static int total_count;//全局变量
pthread_mutex lock = PTHREAD_MUTEX_INITIALIZER;//申请个互斥锁并且给其初始化


在每个线程里修改total_count全局变量的地方添加上

pthread_mutex_lock(&lock);   //加锁
total_count++; //修改共享变量的值
pthread_mutex_unlock(&lock); //解锁

互斥量的作用在于当这个变量lock的时候,别的线程去也执行到这个lock的地方,那就会在这个地方挂起等待这个变量的解锁。当锁被另外一个线程解开的时候,另外线程就会在lock的地方结束挂起,继续执行,lock锁然后去操作变量。如果有一个线程不遵守这个规则直接去修改变量那就没办法了,这个就是没加锁导致线程不安全的隐患了。如果有一个线程加了锁又一直没有解锁,那就会导致线程死锁。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值