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 von A in einer Member-Variablen speichern. Diese gespeicherte ID kann man dann bei einem späteren
    Funktionsaufruf wieder mit std::this_thread::get_id() vergleichen (Die Funktion liefert immer die ID des aktuellen Threads) und
    entsprechend reagieren, falls sie nicht übereinstimmen.


Log in to reply