Archiv verlassen und diese Seite im Standarddesign anzeigen : umgang mit threads
Hallo,
ich habe ein paar allgemeine Fragen zum Thema threads:
-Ich habe in meinem Code globale Variablen definiert, kann ich auf diese aus einem thread heraus zugreifen ohne sie dem thread zu übergeben ?
-Ich habe in meinem Code Funktionen eingebastelt z.B. eine die auf dem Bildschirm bestimmte werte ausgibt. Kann ich diese funktion von einem thread aus aufrufen ?
anda_skoa
12-11-2002, 19:49
Original geschrieben von kqubix
Hallo,
ich habe ein paar allgemeine Fragen zum Thema threads:
-Ich habe in meinem Code globale Variablen definiert, kann ich auf diese aus einem thread heraus zugreifen ohne sie dem thread zu übergeben ?
Ein Thread hat den selben Adressraum wie der startende Prozess.
Er hat aber seinen eigene Stack (lokale Variablen, etc)
-Ich habe in meinem Code Funktionen eingebastelt z.B. eine die auf dem Bildschirm bestimmte werte ausgibt. Kann ich diese funktion von einem thread aus aufrufen ?
Ja, kann man.
Du solltest aber immer im Hinterkopf behalten, dass der Zugriff auf gemeinsame Resourcen (Variablen, Input/Output, etc) geordnet vor sich gehen sollte.
Alle Zugriffe, die etwas ändern, sollten die Resource vor gleichzeitig Zugriff schützen, solange der Zugriff andauert.
Die POSIX Thread library hat da sicher Möglichkeiten wie Semaphore, Mutex/Lock, etc.
Ciao,
_
Da fällt mir noch ne Frage ein:
Ich habe 10 threads, alle 10 rufen eine Funktion auf, die funktion hat lokal eine variable x definiert, die funktion zählt x von 1 bis 10 durch.
So meine Frage da alle threads gleichzeitig auf die funktion zugreiffen könnte es da nicht probleme geben mit dem x dass die threads sich gegenseitig ins x pfuschen ....
oder bekommt jede thread ne "eigene kopie" der funktion ab ?
anda_skoa
13-11-2002, 16:10
Original geschrieben von kqubix
Da fällt mir noch ne Frage ein:
Ich habe 10 threads, alle 10 rufen eine Funktion auf, die funktion hat lokal eine variable x definiert, die funktion zählt x von 1 bis 10 durch.
So meine Frage da alle threads gleichzeitig auf die funktion zugreiffen könnte es da nicht probleme geben mit dem x dass die threads sich gegenseitig ins x pfuschen ....
oder bekommt jede thread ne "eigene kopie" der funktion ab ?
Lokale Variablen werden am Stack abgelegt und da hat jeder Thread einen eigenen.
Es hat also jeder Thread eine eigen Version von x.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.