Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: sp am 02. December 2004, 10:32

Titel: C++ Code Multithreading fähig?
Beitrag von: sp am 02. December 2004, 10:32
Hallo,

ich habe mal eine generelle Frage zu C++. Und zwar, wie werden die Variablen in den Funktionen gespeichert. Ein Bsp.:int foo( int n )
{
   for ( int i=0; i < n; i++ )
   {
      //printf( "#%i", i ); , als Beispiel
   }
}


Angenommen ich habe zwei Threads laufen und beide rufen foo(...) auf. Überschreiben die beiden Threads dann die Variablen innerhalb der Funktion, oder hat jeder Thread sein eigenes int i?
Titel: C++ Code Multithreading fähig?
Beitrag von: GhostCoder am 02. December 2004, 11:08
Hiho,

alle lokalen Variablen und Parameter liegen auf dem Stack, nur static's und globale Variablen nicht, also kommen die sich auch nicht in die Quere.

MfG GhostCoder
Titel: C++ Code Multithreading fähig?
Beitrag von: joachim_neu am 02. December 2004, 13:25
heißt dass, dass man auch auf die globals vom OS zugreifen kann?
Titel: C++ Code Multithreading fähig?
Beitrag von: TeeJay am 02. December 2004, 13:26
Wie schon genannt werden lokale Variablen auf dem Stack gespeichert.

Und da jeder Thread seinen eigene Stack (haben sollte :) ) kommen sich auch 2 Threads nicht in die Quere die die selbe Funktion aufrufen.

Nur bei globalen Variablen oder bei Hardwarezugriffen musst du sorge dafür tragen das sich mehrer Threads nicht in die Quere kommen.

Zu diesem Thema empfehle ich dir mal nach "Semaphoren" zu googlen.