0
我正在研究一種靜態分析工具,該工具可檢測鎖定/釋放調用信號燈之間是否存在不匹配。該檢測特定於VxWorks RTOS。將信號量作爲參數傳遞給函數
我碰到這個測試用例
void fun(char semid);
char id,i;
int main()
{
id = semCreate(); //initializing a semaphore
fun(id);
semGive(id); //semaphore release call
return 0;
}
void fun(char semid)
{
semTake(semid); //semaphore lock call
i++;
}
來到邏輯上的代碼是有道理的,我們可以對於一個信號量的鎖有一個相應的釋放了,但是這是一個使用信號量的正確方法是什麼?這是一個常規編程練習還是顯然無效?
一些支持或拒絕上面給出的信號量使用的詳細代碼將不勝感激。
因此,基本上正確的用法是鎖定和釋放已作爲參數傳遞的函數本身中的信號量,對嗎? – user3917849
@ user3917849是的。通過這樣做,檢查您是否擁有正確數量的鎖和釋放呼叫也很容易。可能存在特殊情況,您無法分開這些呼叫,但我建議避免這種情況。 –