关于互斥锁的问题
下面的两个函数展示了如何通过互斥锁保护全局变量
代码如下
pthread_mutex_t number_mutex;
int globalnumber;
void write_globalnumber()
{
pthread_mutex_lock(&number_mutex);
globalnumber++;
pthread_mutex_unlock(&number_mutex);
}
int read_globalnumber()
{
int temp;
pthread_mutex_lock(&number_mutex);
temp=globalnumber;
pthread_mutex_unlock(&number_mutex);
return(temp);
}
书上说上述代码,write_globalnumber 函数使用互斥锁保证在修改变量的时候操作一次执行完毕,不会中断。而read_globalnumber 函数使用互斥锁保证在读数据的时候,全局变量globalnumber 不会被修改,确保读到的正确的数据
为什么使用了互斥锁就可以达到上面的效果啊?
不明白 可能你们觉的很简单吧 但是我却理解的很费劲
[解决办法]
因为mutex锁定时pthread_mutex_lock就会卡住
[解决办法]
pthread_mutex_lock(&number_mutex);
简单的说你要执行这句后面的代码就必须先获得互斥锁,一旦这个互斥锁被其他的线程或进程获取那么你就必须先等待,等别人释放之后你才可能有机会获取才有机会执行后面的代码。