[linux basic 基础]----同步互斥量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[linux basic 基础]----同步互斥量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含785字,纯文字阅读大概需要2分钟。
内容图文
互斥量,运行程序元锁住某个对象,使得每次只能有一个线程访问它;为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它 ;
基本函数与用于信号量的函数非常相似
#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *mutext, const pthread_mutexattr_t *mutexattr);
int pthread_mutext_lock(pthread_mutex_t *mutex);
int pthread_mutext_unlock(pthread_mutex_t *mutex);
int pthread_mutext_destory(pthread_mutex_t *mutex);
这些函数成功,返回0,失败返回错误代码,不会设置errno,所以必须对返回代码进行检查
与信号量类似,这些参数都是一个先前声明过的对象的指针,对互斥量来说,这个对象类型为pthread_mutext_t。
pthread_mutext_init函数中的属性参数与性能我们设置互斥量的属性,而属性控制着互斥量的行为;
熟悉类型默认是fast,但他有一个缺点:如果程序试图对一个已经家了锁的互斥量调用pthread_mutex_lock,程序就会阻塞;
但是拥有信号量的线程正是被阻塞的线程,所以互斥量就永远不会被解锁了,程序也就进入“死锁”状态;
解决方法:就是改变互斥量的属性,让属性来检查这种情况并返回一个错误,或者让它递归操作,给同一个线程加上多个锁,但是“lock”操作和“unlock”操作必须相对应;
原文:http://www.cnblogs.com/li-daphne/p/5326079.html
内容总结
以上是互联网集市为您收集整理的[linux basic 基础]----同步互斥量全部内容,希望文章能够帮你解决[linux basic 基础]----同步互斥量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。