Hallo iedereen. Ik ben bezig (al weer) om multithreaded te programmeren. Ik wil als oefening een chat server maken (en de clients). Om mij zelf wat werk uit handen te nemen ben ik sinds kort gaan kijken naar de Qt Library.
Een multithreaded server opzetten is opzich het probleem niet. Maar nu komt het probleem. Ik namelijk dat clientX naar clientY iets kan versturen. Dus moet de server alles connectie in een grote lijst opslaan? Maar om je dus vanuit verschillende threads dan deze lijst zou moeten uitlezen geeft dan problemen. Ik zou dan met mutexen moeten gaan werken ? Maar dan gaat er iets fout. Namelijk, ik elke thread zit een loop die gewoon wacht tot de client een regel stuurd en handelt deze dan af. Of te wel, de client socket is continue in gebruik. Hoe kan ik dan toch als deze client socket in gebruik is tegelijkertijd vanuit een andere thread via die list iets sturen naar die client socket?
Ik kom er niet echt uit. Ik heb dit eigenlijk al tig keren geprobeerd, maar dit lukt me nooit. En als ik dan een systeem heb met mutexen etc. kan je in de laatste gemaakt thread wel alle client zien in de list, maar met een oudere thread zie je de nieuwste clients niet... etc. etc.
Een multithreaded server opzetten is opzich het probleem niet. Maar nu komt het probleem. Ik namelijk dat clientX naar clientY iets kan versturen. Dus moet de server alles connectie in een grote lijst opslaan? Maar om je dus vanuit verschillende threads dan deze lijst zou moeten uitlezen geeft dan problemen. Ik zou dan met mutexen moeten gaan werken ? Maar dan gaat er iets fout. Namelijk, ik elke thread zit een loop die gewoon wacht tot de client een regel stuurd en handelt deze dan af. Of te wel, de client socket is continue in gebruik. Hoe kan ik dan toch als deze client socket in gebruik is tegelijkertijd vanuit een andere thread via die list iets sturen naar die client socket?
Ik kom er niet echt uit. Ik heb dit eigenlijk al tig keren geprobeerd, maar dit lukt me nooit. En als ik dan een systeem heb met mutexen etc. kan je in de laatste gemaakt thread wel alle client zien in de list, maar met een oudere thread zie je de nieuwste clients niet... etc. etc.