Multithreading
-
Hey!
Ich suche verzweifelt nach einer Möglichkeit in meinem Programm 2 Prozesse gleichzeitig laufen zu lassen.
Auf meiner Suche bin ich auf fork() und pthread_create() gestoßen, doch mit beiden Funktionen kann ich leider nichts anfangen.
Soweit ich das richtig verstanden habe, erzeugt fork() eine Kopie des aufrufenden Prozesses (was ich nicht will, ich möchte einen Child- Prozess starten und in diesem dann einen anderen Teil des Programms ausführen, während in einem 2. Child- Prozess wiederum anderer Code ausgeführt wird usw.).
Die wenigen Infos die ich über pthread_create() finden konnte haben mir leider auch nicht weiter geholfen!Gibt es keine verhältnismäßig einfache Methode 2 Prozesse parallel ablaufen zu lassen?
Was ich evtl noch dazu sagen sollte:
Ich programmiere in ANSI C unter LINUX!Schon mal danke im Voraus!
Schönen Abend noch!
lg, Platon
-
Dieser Thread wurde von Moderator/in TactX aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
doch, man: fork(2) und man: pthread_create(2) sind genau das was du suchst.
Bei fork kannst du über den Rückgabewert ermitteln, ob du im Parent oder im Child dich befindest und entsprechend anderen Code ausführen. Bei pthread_create kannst du einen Funktionespointer übergeben.
-
Beschreib doch erstmal dein Problem oder zeig konkreten Code, den du laufen lassen möchtest. Dann kann man sehen, wie es sinnvoll geht.
-
Danke erst mal für die Antworten!
Also es handelt sich um condition monitoring, genauer gesagt ein kleiner Server, der ständig Daten entgegennimmt, analysiert und verarbeitet. Gleichzeitig sollen regelmäßig Statusanfragen an die angeschlossenen Hosts gesendet werden.
Um nicht innerhalb einer Serverschleife immer hintereinander Daten entgegenzunehmen und dann die Statusanfragen zu senden, möchte ich diese 2 Aufgaben (stark vereinfacht) in 2 parallel abzuarbeitenden Threads durchführen.
Leider konnte ich keine Tutorials oder Manuals zu diesem Thema finden, die mir fork() oder pthreads verständlich machen konnten.
Bez. Code:
Eigendlich sind es nur 2 Funktionen, die jeweils in einem eigenen Prozess gestartet werden sollen.btw.: Was hat es mit der 2 in fork(2) aufsich? Ich habe soetwas schon öfter gesehen, unter anderem auch bei exit(1) (und das mal einfach so hingenommen), würde aber schon gerne wissen was die Zahlen zu bedeuten haben!
lg, Platon
-
fork(2) heisst, daß die man-page in section 2 zu finden ist. Man-pages, also die online-Hilfe unter Unix, ist in Themenbereiche gegliedert. Es kommt vor, daß mehrere man-pages den gleichen Namen haben, aber in verschiedenen sections zu finden sind. Dann ist es wichtig zu wissen, welche der Seiten gemeint ist.
Wie Du die section gezielt auswählst und welche sections es gibt und weitere hilfreiche Informationen findest Du unter man(1) (um es gleich mal zu üben
).
Tntnet
-
Platon schrieb:
Danke erst mal für die Antworten!
Also es handelt sich um condition monitoring, genauer gesagt ein kleiner Server, der ständig Daten entgegennimmt, analysiert und verarbeitet. Gleichzeitig sollen regelmäßig Statusanfragen an die angeschlossenen Hosts gesendet werden.
Um nicht innerhalb einer Serverschleife immer hintereinander Daten entgegenzunehmen und dann die Statusanfragen zu senden, möchte ich diese 2 Aufgaben (stark vereinfacht) in 2 parallel abzuarbeitenden Threads durchführen.
Leider konnte ich keine Tutorials oder Manuals zu diesem Thema finden, die mir fork() oder pthreads verständlich machen konnten.
Warum machst du für die beiden Aufgaben nicht zwei verschiedene Programme?
-
http://www.pronix.de/pronix-290.html
Hoffe der Link geht, sonst: >>Openbooks>>Linux-UnixProg>>10.Netzwerkp.>>Parallele Server!
mfg K13Pilot
-
Boost bietet auch eine Threadlibrary.