2016-08-08 41 views
2

I können ein sempahore anderen Semaphor zugewiesen werden, werden beide so verhalten, als die gleiche, für die z. B. (dieses VxWorks Code)Zuordnen eines Semaphors zu anderen

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

die obigen Code-Abschnitte in der Ressource zu verriegeln.

Zweitens, wenn das funktioniert, gibt es einen Codierungsstandard oder Praxis, die diese Art der Verarbeitung nicht erlaubt.

+0

Warum würden Sie wollen, dies zu tun? – mjs

+0

Ich mache das nicht, ich verstehe, dass es nicht getan werden sollte. will nur wissen, gibt es einen Standard, der es verbietet, wie C nicht. –

+1

Das ist eine Frage für Ihre lokalen Codierungsstandards. Es gibt keinen Grund, warum das nicht möglich ist, aber wenn ich das in einem Code-Review sah, könnte ich es abfragen, aber es hängt vom Kontext ab. Zum Beispiel, wenn die SEM_ID tief in einer verschachtelten Struktur vergraben war, würde ich vielleicht lieber eine Temp zuweisen, nur um es zu kürzen – mjs

Antwort

2

vxWorks-Semaphor-IDs sind kopierbar, und die Kopie ist "genauso gut" wie das Original, daher ist das hier gezeigte Codebeispiel nicht falsch. Es scheint jedoch keine besonders gute Idee zu sein. Es ist schwer, aus diesem Ausschnitt zu erkennen, wie der gesamte Code aussieht, und in einem größeren Codeblock wäre es wahrscheinlich schwer zu sagen, welche Semaphore genommen werden und welche vergeben werden.

(Dies ist keine Programmiersprache C Frage:. VxWorks Semaphore sind hauptsächlich verwendbar von C, sind aber nicht durch die Sprache definiert)