96SEO 2026-02-19 08:35 0
读写锁与互斥锁类似可用来同步同一进程中的各个任务但与互斥锁不同的是其允许多个读操作并发重入而写操作互斥。

相对于互斥锁的开锁或闭锁状态读写锁有三种状态读模式下的锁写模式下的锁无锁。
多任务环境下往往存在多个任务访问同一共享资源的应用场景读模式下的锁以共享状态对保护区访问而写模式下的锁可被用于对共享资源的保护从而实现独占式访问。
这种共享-独占的方式非常适合多任务中读数据频率远大于写数据频率的应用中提高应用多任务并发度。
相较于互斥锁读写锁如何实现读模式下的锁及写模式下的锁来控制多任务的读写访问呢
若A任务首次获取了写模式下的锁有其他任务来获取或尝试获取读模式下的锁均无法再上锁。
若A任务获取了读模式下的锁当有任务来获取或尝试获取读模式下的锁时读写锁计数均加一。
LOS_RwlockDestroy删除指定的读写锁读模式下的锁的申请-
LOS_RwlockTryRdLock尝试申请指定的读模式下的锁写模式下的锁的申请-
LOS_RwlockTryWrLock尝试申请指定的写模式下的锁读写锁的释放LOS_RwlockUnLock释放指定读写锁读写锁有效性判断LOS_RwlockIsValid判断读写锁有效性
申请读模式下的锁LOS_RwlockRdLock或写模式下的锁LOS_RwlockWrLock。
若有人非自己持有写模式下的锁则当前任务无法获得锁直到写模式下的锁释放。
申请写模式下的锁
若该锁当前没有任务持有或者持有该读模式下的锁的任务和申请该锁的任务为同一个任务则申请成功可立即获得写模式下的锁。
若该锁当前已经存在读模式下的锁且读取任务优先级较高则当前任务挂起直到读模式下的锁释放。
3.申请读模式下的锁和写模式下的锁均有三种无阻塞模式、永久阻塞模式、定时阻塞模式区别在于挂起任务的时间。
如果有任务阻塞于指定读写锁则唤醒被阻塞任务中优先级高的该任务进入就绪态并进行任务调度
LiteOS-A内核作为实时操作系统需要保证任务调度的实时性尽量避免任务的长时间阻塞因此在获得读写锁之后应该尽快释放该锁。
持有读写锁的过程中不得再调用LOS_TaskPriSet等接口更改持有读写锁任务的优先级
mutex用户态快速互斥锁)是内核提供的一种系统调用能力通常作为基础组件与用户态的相关锁逻辑结合组成用户态锁是一种用户态与内核态共同作用的锁例如用户态mutex锁、barrier与cond同步锁、读写锁。
其用户态部分负责锁逻辑内核态部分负责锁调度。
当用户态线程请求锁时先在用户态进行锁状态的判断维护若此时不产生锁的竞争则直接在用户态进行上锁返回反之则需要进行线程的挂起操作通过Futex系统调用请求内核介入来挂起线程并维护阻塞队列。
当用户态线程释放锁时先在用户态进行锁状态的判断维护若此时没有其他线程被该锁阻塞则直接在用户态进行解锁返回反之则需要进行阻塞线程的唤醒操作通过Futex系统调用请求内核介入来唤醒阻塞队列中的线程。
当用户态产生锁的竞争或释放需要进行相关线程的调度操作时会触发Futex系统调用进入内核此时会将用户态锁的地址传入内核并在内核的Futex中以锁地址来区分用户态的每一把锁因为用户态可用虚拟地址空间为1GiB为了便于查找、管理内核Futex采用哈希桶来存放用户态传入的锁。
当前哈希桶共有80个0-63号桶用于存放私有锁以虚拟地址进行哈希64-79号桶用于存放共享锁以物理地址进行哈希私有/共享属性通过用户态锁的初始化以及Futex系统调用入参确定。
如下图所示每个futex哈希桶中存放被futex_list串联起来的哈希值相同的futex
node对应一个被挂起的tasknode中key值唯一标识一把用户态锁具有相同key值的node被queue_list串联起来表示被同一把锁阻塞的task队列。
功能分类接口名称描述设置线程等待OsFutexWait向Futex表中插入代表被阻塞的线程的node唤醒被阻塞线程OsFutexWake唤醒一个被指定锁阻塞的线程调整锁的地址OsFutexRequeue调整指定锁在Futex表中的位置
Futex系统调用通常与用户态逻辑共同组成用户态锁故推荐使用用户态POSIX接口的锁。
信号(signal)是一种常用的进程间异步通信机制用软件的方式模拟中断信号当一个进程需要传递信息给另一个进程时则会发送一个信号给内核再由内核将信号传递至指定进程而指定进程不必进行等待信号的动作。
功能分类接口名称描述注册信号回调函数signal注册信号总入口及注册和去注册某信号的回调函数。
注册信号回调函数sigaction功能同signal但增加了信号发送相关的配置选项目前仅支持SIGINFO结构体中的部分参数。
发送信号killpthread_killraisealarmabort发送信号给某个进程或进程内发送消息给某线程为某进程下的线程设置信号标志位。
触发回调无由系统调用与中断触发内核态与用户态切换前会先进入用户态指定函数并处理完相应回调函数再回到原用户态程序继续运行。
信号机制为提供给用户态程序进程间通信的能力故推荐使用上表1列出的用户态POSIX相关接口。
支持信号注册的配置修改和配置获取目前仅支持SIGINFO的选项SIGINFO内容见sigtimedwait接口内描述。
进程接收信号存在默认行为单不支持POSIX标准所给出的STOP及CONTINUE、COREDUMP功能。
进程无法屏蔽SIGSTOP、SIGKILL、SIGCONT信号。
进程结束后会发送SIGCHLD信号给父进程该发送动作无法取消。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback