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?


  • Mod

    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.


Anmelden zum Antworten