Multithreading Frage



  • Hi C++ community,
    so hab mir jetzt übers wochenende die Windows Socket Programmierung näher angeguckt. Hab mir das von der msdn durchgelesen und verstehe auch was da so vor sich geht. Das Problem ist jetzt das dieses Beispiel nur für einen Client, sprich einer kann nur connecten, ausgelegt ist.
    Ich kann es mit einer schleife so umschreiben das sich mehr Clienten mit mir "gleichzeitig" verbinden können. Nun möchte ich aber das Annehmen und die Kommunikation parallel laufen lassen und zwar über threads.
    Ein Thread kümmert sich um die eingehenden verbindungen und mit dem anderen thread kann ich mit den clienten kommunizieren.

    Fragen:
    Wie erstelle ich diese beiden Threads?
    Wie lasse ich die Threads untereinander kommunizieren?

    Note: es soll ein kleines chatprogramm werden 😉

    Vielen Dank für eure antworten 🙂



    1. mit boost::thread, _beginthreadex, CreateThread oder auch PTHREADs - was dir halt zur Verfügung steht
    2. über shared-memory + mutexen + condition-variablen


  • @husti:

    mutexals + shared memory ist für IPC gut,.. aber für ITC bieten doch CRITICAL_SECTIONS die bessere performance!?
    oder wie oder wat? 😃

    einfach das objekt dann per lparam übergeben,...

    typedef struct blub
    {
    protected:
    LPCRITICAL_SECTION csSection;
    int __serialize(void);
    int __unserialize(void);
    
    int member_1;
    int member_2;
    public:
    blub();
    ~blub();
    
    size_t set_member_1(int toSet);
    size_t get_member_1(int toGet&);
    
    size_t set_member_2(int toSet);
    size_t get_member_2(int toGet&);
    }BLUB,*LPBLUB;
    

    greetz


Anmelden zum Antworten