Autor Thema: C++ Code Multithreading fähig?  (Gelesen 5046 mal)

sp

  • Gast
Gespeichert
« 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?

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #1 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
A man, a legend!

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #2 am: 02. December 2004, 13:25 »
heißt dass, dass man auch auf die globals vom OS zugreifen kann?
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #3 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.
----------------------
Redakteur bei LowLevel

 

Einloggen