2009-05-14 18 views

Antwort

0

Wenn mein Verständnis Ihrer Frage richtig ist, ist es Duplex.

Mit gemeinsamen Speicher konnten beide Prozesse beide Wege kommunizieren, nicht nur mit einem als der Leser und einer als der Schreiber. Pipes erlauben nur das Lesen oder Schreiben, aber Sie können dies durch die Verwendung von zwei Pipes überwinden (obwohl Nachrichtenwarteschlangen die bessere Option sind).

0

Ein Semaphor funktioniert so ... proc a: "Ist die Ressource verfügbar?" Semaphore = -2 Ja. Semaphore ++ Proc b: "Ist die Ressource ..." Semaphore = -1 Ja. Semaphore ++ proc c: "ist die Ressource ..." semaphore = 0 Nr. (nichts passiert)

an dieser Stelle kann proc c Warteschlange (abhängig von Ihrer API, könnte dies eine ausgelastete Schleife sein, oder es könnte sein ein Rückruf, oder Sie können einfach einen wartenden Thread spawnen & schreiben Sie Ihren eigenen Rückruf)

proc a: "ich bin fertig" semaphore--;

Proc c wird feststellen, dass Semaphore verfügbar ist, durch etwas, das wahrscheinlich ähnlich zu dem, was ich bereits erwähnt habe.

der Grund, warum ich das alles geschrieben habe, ist so, ich könnte sagen, es ist beides. Es ist wie eine Nachrichtenwarteschlange, in der Sie Threads auf eine Ressource warten lassen können (gemeinsam genutzter Speicher, der von einem Semaphor gesteuert wird), die eine Aktion auslösen, sogar eine tatsächliche Systemnachricht, wenn sie die Ressource erhalten. Oder Sie könnten einfach beschäftigt sein - warten Sie, bis es fertig ist, und das wäre wie Piping.