Multithreading: Kommunikation zwischen Threads



  • Hallo,
    Ich habe schon im C++ Forum geschrieben und mir wurde gesagt ich könne hier nochmal fragen.

    Ich müsste folgendes Szenario umsetzen:

    Klasse A wird 5 mal instanziert und erstellt je einen Thread mit einer Funktion in Klasse A.
    In jedem Thread der Instanz der Klasse A wird ein weiterer Thread erstellt, wessen Funktion in Klasse B ist.
    In bestimmten Fällen soll die Threadfunktion in Klasse B die Threadfunktion in Klasse A benachrichtigen.

    In vielen Foren wird ja von PostThreadMessage() abgeraten, deswegen wollte ich gerne wissen, wie ihr in diesem Fall vorgehen würdet 🙂

    Vielen Dank und Beste Grüße,
    Severin


  • Mod

    Was heißt benachrichtigen.
    Du kannst doch ein enfaches Datenfeld in Klasse A oder B füllen. Je nachdem wer welchen Zeiger hält.



  • Dann erstell dir halt nen eigenen ThreadMessenger.
    Dieser hat interne Listen für eingehende und ausgehende Nachrichten.
    Weiterhin noch Funktionen zum senden und Empfangen von Nachrichten.

    Diesen ThreadMessenger packst du in deine Klassen A und B und kannst so je nach Bedarf sagen:

    A::Fx()
    {
        //A schickt Nachricht an B
        DWORD dwData= GetData();
        pMessenger->SendTo(pB->GetThreadID(), dwData);
    }
    und B erwartet dann die Nachricht
    B::Fx()
    {   
        //B schickt Nachricht an A
        DWORD dwData= pMessenger->WaitFor(pA->GetThreadID());
    }
    

Log in to reply