Forum: PC-Programmierung pthread_create() in linux


von christian (Gast)


Lesenswert?

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;
}

von Εrnst B. (ernst)


Lesenswert?

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
Noch kein Account? Hier anmelden.