1~-(n-1)
信号量Semaphore用于:
对一个共享资源(互相排斥)访问的控制;表示一个事件的发生;让两个任务同步。
下面代码中的信号量:shared_resource_sem用于对一个共享资源(相互排斥)访问的控制;而信号量key_down_sem则表示一个事件的发生。如果一个信号量的值大于0,则可以使用。如果信号量的值为0,则对该信号量的Pend操作将被放置在等待列表中。
对一个信号量进行初始化时,必须提供该信号量的初始值。初始值可以有以下三种:
0:当信号量用于表示一个事件发生时,如:
key_down_sem = OSSemCreate(0);1:当信号量用于对一个共享资源访问的控制时,如:
shared_resource_sem = OSSemCreate(1);
n:当信号量用于表示允许任务n个相同的资源时。还应该注意把信号量的初始化放在RTOS启动前