Statische Funktionen
-
Hi, die Frage hat zwar nicht wirklich etwas mit Standard-C++ zu tun, aber irgendwie doch genug, als dass ich hier auf die besten Antworten hoffe.
Wie sieht es mit Zugriffen aus mehreren Threads auf eine statische Memberfunktion aus?
class C { static int i; static mutex m; public: static void foo(int v) { lockMutex(m); i = v; releaseMutex(m); } };Der Zugriff auf die statische Variable i ist zwar abgesichert, aber wie sieht es mit der statischen Memberfunktion foo() aus? Darf diese überhaupt aus mehreren Threads aufgerufen werden, ohne wieder durch Mutexe abgesichert zu sein?
Könnte man das Problem, falls es überhaupt eines ist, mit friend statt static beheben?
-
Du darfst Funktionen so oft aus verschiedenen Threads aufrufen wie du lustig bist. Du musst halt aufpassen, wenn die Funktion sich bei mehreren Aufrufen durch verschiedene Threads Ressourcen teilt. Zum Beispiel static oder globale Variablen.
threader schrieb:
Könnte man das Problem, falls es überhaupt eines ist, mit friend statt static beheben?
Was soll friend damit zu tun haben? 