• Lv0
    粉丝0

积分6 / 贡献0

提问3答案被采纳0文章0

作者动态

信息量与互斥锁

苏佳旭 来自手机 显示全部楼层 发表于 2024-4-4 21:28:26
1·互斥锁的解锁和加锁状态是什么样的?
   2·如何用信息量来控制并发访问?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论1

dragon

沙发 发表于 2024-4-5 15:32:34

信息量与互斥锁

互斥锁只有两种状态,要么可用(解锁状态),要么被拥有线程阻塞(加锁状态)。

相关接口:
osMutexNew        创建并初始化一个互斥锁
osMutexGetName        获得指定互斥锁的名字
osMutexAcquire        获得指定的互斥锁的访问权限
osMutexRelease        释放指定的互斥锁
osMutexGetOwner        获得指定互斥锁的所有者线程
osMutexDelete        删除指定的互斥锁

您是想问“如何用信号量(Semaphore)来控制并发访问”么?很简单,获取一个许可证,之后访问资源,最后释放这个许可证。

使用信号量,建立对共享资源池的访问许可证集,任何一个线程,要想访问共享资源池,首先要获取一个许可证,获取到之后,才能进来访问共享资源池,访问结束后,要及时释放这个许可证,因为只要你不释放它,其他线程就无法获取到他,也就无法访问共享资源池。

由于某一时刻,能够持有许可证的线程的数量,不会超过许可证的总量,也就保证了对共享资源池的并发同步访问。

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部