丹东做网站的建立网站可行性
丹东做网站的,建立网站可行性,wordpress上篇下篇代码,移动应用开发网站目录 一、信号量基本概念二、信号量运行机制三、信号量开发流程四、信号量接口五、代码分析#xff08;待续...#xff09;坚持就有收获 一、信号量基本概念
信号量#xff08;Semaphore#xff09;是一种实现任务间通信的机制#xff0c;可以实现任务间同步或共享资源的… 目录 一、信号量基本概念二、信号量运行机制三、信号量开发流程四、信号量接口五、代码分析待续...坚持就有收获 一、信号量基本概念
信号量Semaphore是一种实现任务间通信的机制可以实现任务间同步或共享资源的互斥访问。
一个信号量的数据结构中通常有一个计数值用于对有效资源数的计数表示剩下的可被使用的共享资源数其值的含义分两种情况
0表示该信号量当前不可获取因此可能存在正在等待该信号量的任务。正值表示该信号量当前可被获取。
以同步为目的的信号量和以互斥为目的的信号量在使用上有如下不同
用作互斥时初始信号量计数值不为 0表示可用的共享资源个数。在需要使用共享资源前先获取信号量然后使用一个共享资源使用完毕后释放信号量。这样在共享资源被取完即信号量计数减至 0 时其他需要获取信号量的任务将被阻塞从而保证了共享资源的互斥访问。另外当共享资源数为 1 时建议使用二值信号量一种类似于互斥锁的机制。用作同步时初始信号量计数值为 0。任务 1 因获取不到信号量而阻塞直到任务 2 或者某中断释放信号量任务 1 才得以进入 Ready 或 Running 态从而达到了任务间的同步。
二、信号量运行机制
信号量初始化为配置的 N 个信号量申请内存N 值可以由用户自行配置通过LOSCFG_BASE_IPC_SEM_LIMIT 宏实现并把所有信号量初始化成未使用加入到未使用链表中供系统使用。信号量创建从未使用的信号量链表中获取一个信号量并设定初值。信号量申请若其计数器值大于 0则直接减 1 返回成功。否则任务阻塞等待其它任务释放该信号量等待的超时时间可设定。当任务被一个信号量阻塞时将该任务挂到信号量等待任务队列的队尾。信号量释放若没有任务等待该信号量则直接将计数器加 1 返回。否则唤醒该信号量等待任务队列上的第一个任务。信号量删除将正在使用的信号量置为未使用信号量并挂回到未使用链表。
信号量允许多个任务在同一时刻访问共享资源但会限制同一时刻访问此资源的最大任务数目。当访问资源的任务数达到该资源允许的最大数量时会阻塞其他试图获取该资源的任务直到有任务释放该信号量。 三、信号量开发流程
创建信号量 LOS_SemCreate若要创建二值信号量则调用 LOS_BinarySemCreate。申请信号量 LOS_SemPend。释放信号量 LOS_SemPost。删除信号量 LOS_SemDelete。
四、信号量接口
功能类别接口函数描述创建/删除信号量LOS_SemCreate创建信号量返回信号量IDLOS_BinarySemCreate创建二值信号量其计数值最大为1LOS_SemDelete删除指定的信号量申请/释放信号量LOS_SemPend申请指定的信号量并设置超时时间LOS_SemPost释放指定的信号量
五、代码分析待续…
坚持就有收获
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90249.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!