In C++, wenn Sie lokale Variablen in einer statischen Elementfunktion haben, bedeutet dies, dass diese lokalen Variablen auch implizit statisch sind oder sind sie wirklich lokal?statische Member-Funktion und Thread-Sicherheit
Beispiel:
static void myClass::somefunc(int someint)
{
int myint = someint; // is myint really a local variable or does it change due to the static qualifier at function level?
}
Auch verschiedene Threads von einem Thread-Pool diese Funktion ausgeführt wird, wird myint müssen durch eine Sperre geschützt werden? angenommen, dass alle Werte, die an sie übergeben werden, unterschiedlich sind und keine Beziehung zueinander haben.
EDIT: Vielen Dank für die Antworten. Was nun, wenn ich in einer boost::shared_ptr<T>
übergeben, wissen, dass dieses Objekt nicht gleichzeitig von einem anderen Thread verwendet werden würde? (Nicht sicher, ob man das wirklich garantieren kann, oder können Sie?)
Ich vermute, dass ein rohes PTR reingereicht wurde, würde etwas Schutz benötigen, wenn es überall verwendet würde?
Sie verwirrt wird durch statische mit zwei völlig unterschiedlichen Bedeutungen. Sie sind nicht allein, weshalb die statische Funktion einer eigenständigen Funktion möglicherweise veraltet ist. – Suma