Hallo, auf einem Linux System möchte ich in C ein Programm schreiben, indem 2 Threads erzeugt werden sollen.Beide Treads sollen diesselbe Funktion fkt1() durchlaufen.Die Funktion 1 wiederum ruft Funktion 2 auf. Meine Frage ist nun ob bei der parallelen Abarbeitung der Treads jeweils eigene Stackbereiche für die lokalen Variablen angelegt werden.D.h.kann ich davon ausgehen,das auch die Funktion fkt2 wirklich parallel bearbeitet wird? Diese wird ja nicht explizit mit pthread_create() aufgerufen. Danke für die Hilfe. void fkt1 (void *ch) { fkt2(); /*lokale Variable der Fkt.1*/ } void fkt2 (void *ch) { /*lokale Variable der Fkt.2*/ } int main () { char ch1='-', ch2='*'; pthread_t p1, p2; pthread_create (&p1, NULL, fkt1, &ch1); pthread_create (&p2, NULL, fkt1, &ch2); pthread_join (p1, NULL); pthread_join (p2, NULL); printf ("\n"); return 0; }
Ja, jeder Thread hat seinen eigenen Stack. Ja, auch fkt2 wird dann parallel aufgerufen. (Parallel ist natürlich relativ, das entscheidet der Kernel… zumindest potentiell gleichzeitig auf SMP-Systemen.)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.