2016-08-08 47 views
2

我可以將一個sempahore到其它信號,都將表現爲相同的,例如,(這VxWorks的代碼)分配一個信號給其他

mySemId = semCreate(...) 
     tempSemId = mySemId; 
    semTake(tempSemId,...); 
    ... 
    semGive(mySemId). 

將在鎖定的資源上面的代碼片斷工作。其次,如果這樣做有一個編碼標準或實踐,不允許這種處理。

+0

你爲什麼要這麼做? – mjs

+0

我不這樣做,我明白這不應該做。只是想知道是否有一些標準禁止C作爲標準。 –

+1

這是您本地編碼標準的問題。沒有理由不能這樣做,但是如果我在代碼審查中看到這個,我可能會查詢它,但它取決於上下文。例如,如果SEM_ID深埋在一個嵌套結構中,我可能更喜歡將它分配給一個臨時變量來縮短它 – mjs

回答

2

vxWorks信號量ID是可複製的,副本與原始副本「一樣好」,因此此處顯示的代碼示例沒有錯誤。不過,這似乎並不是一個好主意。很難從這段代碼中看出整個代碼是什麼樣子的,在更大的代碼塊中,我認爲很難判斷哪個信號量正在被接收,哪些正在被給定。

(這不是一個C語言的問題:VxWorks的信號量,主要使用 C,但不定義語言)

相關問題