线程通讯中的mutex线程控制详解

本文深入探讨了多线程环境中互斥锁的作用与使用方法,包括互斥锁的基本概念、初始化、上锁、解锁及三种不同类型的互斥锁的区别。详细解释了如何利用互斥锁确保共享资源的正确访问顺序,以及不同类型互斥锁的特性与应用场景。
摘要由CSDN通过智能技术生成

今天在编写多线程通讯的时候,关于共享资源的操作不冲突,应用互斥锁方面有些不是很清楚,通过编写一些例子和看书的解释说明在这里我做下我对这方面的总结:

mutex 是一种简单的加锁的方法来控制对共享资源的存取。这个互斥锁只有两种状态,
也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。在同一时刻只能有一个线程
掌握某个互斥上的锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁
一个已经上锁了的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。可以说,
这把互斥锁使得共享资源按序在各个线程中操作。
互斥锁的操作主要包括以下几个步骤。
· 互斥锁初始化:pthread_mutex_init
· 互斥锁上锁:pthread_mutex_lock
· 互斥锁判断上锁:pthread_mutex_trylock
· 互斥锁接锁:pthread_mutex_unlock
· 消除互斥锁:pthread_mutex_destroy

互斥锁分为三种:1.快速互斥锁 2.递归互斥锁 3.检错互斥锁。

其实看了书才知道这三种锁的主要区别在于其他没有占有互斥锁的线程在希望得到互斥锁是否需要阻塞等待。

快速锁是在调用线程会阻塞到拥有互斥锁的线程解锁为止。

递归互斥锁能够成功的返回并且增加调用线程在互斥上加锁的次数。

检错互斥锁是非阻塞模式,直接返回并且返回一个错误信息。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值