PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ : fork() unter C++



DanDanger
25-06-2003, 02:39
Hallo,


gibt es eine Möglichkeit, unter C++(!) Prozesse zu forken (fork() ist ja leider nur C Möglich) ??

Mein Problem ist :



int main()
{
NetworkLoop() ;

UserInputLoop() ;

return 0 ;
}


NetworkLoop() ist eine Funktion, die in einer do...while(true) Schleife (solange das Proggi läuft) im Netzwerk auf User-Input Lauscht.

UserInputLoop macht ähnliches, wartet aber auf User-Input von der Tastatur/Maus.

Mein Problem ist nun :
Da beide Funktionen ja "Unendlich" laufen, kann ich entweder nur NetworkLoop() oder UserInputLoop() starten, da eine Endlos-Schleife in beiden Funktionen verhindert, dass das Proggi weiter ausgeführt wird.

Meine Frage : Ist es möglich, eine von beiden Funktionen als "Thread" auszuführen, so dass die beiden quasi "parallel" laufen (und ich sowohl vom Netzwerk, als auch von der Tastatur Eingaben verarbeiten kann) ????

Neugierige Grüsse
DanDanger

wraith
25-06-2003, 08:32
Naja,weder der C noch der C++ Standard beschreibt fork().
fork() ist auch nur eine Funktion,die dir von deinem BS zur Verfügung gestellt wird.Und ob du die jetzt in einem C oder C++ Programm aufrufst,ist dabei egal.
(wüßte jedenfalls nicht was gegen ein fork() in einem C++ Programm spricht).

DanDanger
25-06-2003, 14:58
Hi,

nun, das Problem ist, das meine Anwendung möglichst Plattformunabhängig sein soll. Wenn fork() vom BS abhängt, ist Plattformunabhängigkeit ja nicht mehr gegeben.

Gibt es keinen "Standartweg", Prozesse unter C++ als Thread zu starten ???

anda_skoa
25-06-2003, 15:12
Original geschrieben von DanDanger

Gibt es keinen "Standartweg", Prozesse unter C++ als Thread zu starten ???

Prozesse und Threads sind immer Betriebsystemabhängig, darum gibt es sowas nicht in der Standardbibliothek.

Selbst poll oder select, was man hier eventuell verwenden könnte, gibts nur auf POSIX Systemen.

Du brauchst eine Crossplattform Bibliothk, die dir sowas zu Verfügung stellt und auf allen deinen Zielpalttformen verfügbar ist.
Kandidaten sind Qt, Boost, ACE (oder so ähnlich)

Ciao,
_