Zuordnung von Objekten zu Threads
-
Angenommen ich habe eine Klasse A und zwei Threads T1 und T2. Jetzt kann jeder Thread ein Objekt (oder natürlich auch mehrere) von A auf dem Heap anlegen. Frage: Haben die erzeugten Objekte irgendeine Kenntnis darüber, von welchem Thread Sie erzeugt wurden?
Angenommen in T1 passiert folgendes:
"A* pMyA = new A()"
Weiss das Objekt hinter pMyA dass es zu T1 gehört? Oder kann sich pMyA lediglich die Adresse des Threads anschauen und dadurch feststellen, wenn z.B. T2 eine Methode von pMyA aufrufen möchte?
-
Nein.
Wenn man so eine Funktionalität benötigt, kann man mit
std::this_thread::get_id()
arbeiten und z.B. die ID des erzeugenden
Threads im Konstruktor vonA
in einer Member-Variablen speichern. Diese gespeicherte ID kann man dann bei einem späteren
Funktionsaufruf wieder mitstd::this_thread::get_id()
vergleichen (Die Funktion liefert immer die ID des aktuellen Threads) und
entsprechend reagieren, falls sie nicht übereinstimmen.