词条 | xSemaphoreCreateCounting |
释义 | 计数型信号量xSemaphoreHandle xSemaphoreCreateCounting( unsigned portBASE_TYPE uxMaxCount, unsigned portBASE_TYPE uxInitialCount ) 使用已存在的队列结构来创建计数型信号量。 计数型信号量有下面两种典型应用: 事件计数 在这种应用的情形下,事件处理程序会在每次事件发生时发送信号量(增加信号量计数值),而任务处理程序会在每次处理事件时请求信号量(减少信号量计数值)。因此计数值为事件发生与事件处理两者间的差值,在这种情况下计数值初始化为0是合适的。 资源管理 在这种应用情形下,计数值指示出可用的资源数量。任务必须首先“请求”信号量来获得资源的控制权--减少信号量计数值。当计数值降为0时表示没有空闲资源。任务使用完资源后“返还”信号量--增加信号量计数值。在这种情况下计数值初始化为与最大的计数值相一致是合适的,这指示出所有的空闲资源。 参数uxMaxCount 可以达到的最大计数值。当信号量达到此值后将不能被“返还”。 uxInitialCount 信号量创建时分配的初始值。 返回: 已创建的信号量句柄,为xSemaphoreHandle类型,如果信号量无法创建则为NULL。 使用范例: void vATask( void * pvParameters ) { xSemaphoreHandle xSemaphore; // 在调用xSemaphoreCreateCounting()前信号量不能被使用。 // 信号量的计数最大值将为10,初始值为0。 xSemaphore = xSemaphoreCreateCounting( 10, 0 ); if( xSemaphore != NULL ) { // 信号量被成功创建。 // 信号量现在可用。 } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。