Threads teilen sich eine Funktion.
-
was passiert, wenn sich zwei threads eine funktion teilen?
können die lokalen variablen der funktion von den threads überschrieben werden?z.b. (teilweise pseudo code)
geteilte_func(int val) { int local_val = val; // zugewiesen von thread1 // thread1 pausiert, thread2 betritt die funktion. // überschreibt thread2 local_val? // thread2 pausiert, thread1 läuft weiter. member.thread1.var = local_val; // hat jetzt der member von thread1 den vom thread2 gesetzten wert? }
kennt jemand eventuell eine visualisierte darstellung dieser abläufe? oder gut erklärt in textform?
-
Lokale Variablen von Funktionen liegen auf dem Stack (bzw. den Stacks) und sind daher getrennt für beide Threads. Sofern die Funktion keine statischen Variablen oder sonstwelche einzigartigen Ressourcen benutzt* gibt es keinerlei Probleme.
*: Im Sinne von verändert oder blockiert - Lesen darf man statische Variablen natürlich soviel man will.