信号量是操作系统里的一个基本概念
我现在了解信号量是做什么的,怎么做的。
限于工作经验,只能用到二值信号量。计数型信号量用在什么场合呢?
请哪位用过计数信号量的朋友介绍上,您是在什么场合要使用计数信号量。
(拿停车场的例子讲课就不必了,我就是想增长点见闻)
freeRTOS 中控制多盏灯闪烁,试试单值信号量,和多值信号量,就知道了
单值一次只能有一盏灯闪烁,多值信号量一次可以有多个灯闪烁。
多值信号量相当于单值信号量池
比如你要用 6 个进程跑一个任务,可以初始化一个 初始值为 6 的信号量,然后 fork ,获取到信号量的可以跑,获取不到不跑,跑完释放信号量。
最大只能有 6 个进程,其他进程都获取不到信号量不能运行,结束一个进程,信号量加一,系统 fork 的新进程可以再次获取信号量,还是保持 6 个进程。
多值的一个应用是可以控制多个相关进程
因为多值可以被控制,可以控制激活进程总数,比如信号量在激活进程时被减一,反之相关进程退出时加一,而信号量不为0就还可以激活进程,这样就可以通过初始化不同的信号量来调控可以同时打开的进程数。
信号量可以理解为一个全局变量,这个变量可以为0也可以不为0,二值型的就只有1和0,多值的可以是0123456.。。然后就是大于0执行等于0不执行
计数值信号量多用于同一个信号量可以给多个线程使用,但使用它的线程个数是受限制的