Prozesse und Signale - verschenkte zeit?
-
Hallo,
ich komem einfach nicht weiter und hoffe auf hilfe:
Aufgabe:
ein prozess soll darauf warten, dass ihm daten von einem anderen prozess (bzw. programm) zur verfuegung gestellt wird.mein problem:
a.) ich weiss nicht ob ich z.b. einfach in einer while schleife endlos warte kann und bei nichterfuellung mit sleep schlafen gehen kann.while(1)
{
if (neueDaten() == TRUE) {behandleNeueDaten()};
sleep();
}ist das richtig so oder verschenke ich hier rechenzeit? und wuerde ich das in der cpu auslastungsanzeige sehen?
b.) wie stelle ich die kommunikation zwischen zwei prozessen oder sogar 2 programmen her?
ich dachte entweder ueber die socket schnitstelle, ueber named-pipes oder ueber ein signal
aber wie benutzt man die named-pipes und signale (sockets habe ich gesehen)?
=>z.b muss im obrigen beispiel dei funktion "neueDaten()" ja irgendwie mitbekommen dass neue daten da sind, und "behandleNeueDaten()" muss diese daten ja auch im zugriff haben.c.) wie setzte ich ein lock (mutex) wenn ich damit n prozesse bzw. n programme synchronisieren will? (der mutex muesste dann ja global definiert sein)
=>z.B. muss ja ein wert fuer "neueDaten()" gesetzt bzw. geloescht werden, ohne das eine "race condition" passiert.ich freue mich natuerlich auch ueber antworten die "nur" eine der genannten fragen adressieren
p.s. ich habe schon viel hier im forum gelesen (auch die faq's zu den threads bzw. fork) aber irgendwie hat es noch nicht richtig "ping" gemacht.
-
zu 1) empfehle ich dir dringend, mal einen Blick auf select(2) zu werfen.
-
"Programmieren unter Unix" Links
(okay, ich muss den FAQ Beitrag noch ein bisschen aufräumen und sortieren :))