xSemaphoreCreateCounting

計數型信號量有下面兩種典型套用: 事件計數 在這種套用的情形下,事件處理程式會在每次事件發生時傳送信號量(增加信號量計數值),而任務處理程式會在每次處理事件時請求信號量(減少信號量計數值)。

基本介紹

  • 中文名:使用已存在的佇列結構來創建計數型信號量
  • 外文名: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 ) { // 信號量被成功創建。 // 信號量現在可用。 } }

相關詞條

熱門詞條

聯絡我們