Ik ben niet precies weet wat uw vraag is de vraag, maar het klinkt alsof je het worstelen met het feit dat je nodig hebt om een lus te luisteren voor clientverbindingen met selecteren op uw server, maar u ook moeten doen nuttig werk. Ook in uw klant, kunt u te luisteren voor de input van de gebruiker, maar op hetzelfde moment te wachten op reacties van de server.
Ik weet niet welke taal je gebruikt, maar ik heb dit gedaan in PHP waarin een dunne wrapper rond de socket-gerelateerd systeem vraagt dus ze zijn redelijk vergelijkbaar. U algemeen moeten beslissen of hij een select () oproepen blokkeren of niet. als het niet blokkeren, heb je mogelijk spinnen in uw belangrijkste lus, herhaaldelijk opgeroepen selecteren () zonder resultaat en toch kauwen tot veel CPU-tijd.
Je zou kunnen beslissen over een time-out waar select () blokken voor 100 milliseconden of sobefore besluiten dat er geen gegevens en blijven uitvoeren andere code. Dit lijkt te doen aan de prestaties van uw aanvraag, omdat er misschien dingen die je moet gaan terwijl uw app is slapen.
Als dat is wat uw vraag over gaat, kunt u controleren in het maken van uw applicatie multi-threaded (of multiprocessing). Dit concept zou gelden voor zowel de server als de client. U kunt uw belangrijkste draad werkende weg op verzoek en delegeren I / O naar een aparte thread en laat het besturingssysteem zorg van alle plannen. De I / O-draad zal wachtrij van alle I / O-verzoeken en de belangrijkste draad zal plichtsgetrouw dienst hen inleveren ze terug naar de I / O-draad als ze klaar zijn. Helaas, ik ben nog steeds op zoek naar draadsnijden mezelf dus ik kan niet veel verder helpen. Het kan een beetje behaard wanneer u omgaan met multithreading of multiprocessing, want je moet oppassen voor dingen als
race conditions,
impasse, En een heleboel andere concurrency-gerelateerde problemen.