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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010590568/article/details/84850818

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

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

两个互斥量的函数为

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锁然后去操作变量。如果有一个线程不遵守这个规则直接去修改变量那就没办法了,这个就是没加锁导致线程不安全的隐患了。

猜你喜欢

转载自blog.csdn.net/u010590568/article/details/84850818