Jeg er ikke helt sikker på, hvad dit spørgsmål er at spørge, men det lyder som du kæmper med det faktum, at du skal bruge en løkke til at lytte til klienten forbindelser med at vælge på din server, men du er også nødt til at gøre nyttigt arbejde. Også i din klient, kan du blive nødt til at lytte til brugernes input, men på samme tid vente på svar fra serveren.
Jeg ved ikke, hvilket sprog du bruger, men jeg har gjort dette i PHP, som lægger en tynd wrapper omkring stikket-relaterede system opkald, så de er temmelig ens. Du generelt behov for at beslutte, om at foretage en vælge () kalder blokerer eller ej. hvis det ikke er blokeret, kan du måske være spinding i din vigtigste løkke, gentagne gange krævet vælge () uden resultat og alligevel tygge op masser af CPU-tiden.
Du kan afgøre, om en timeout, hvor vælge () blokke til 100 millisekunder eller sobefore beslutte, at der er ingen data og fortsætter med at udføre anden kode. Denne tendens til at underminere effektiviteten af din ansøgning, fordi der kan være ting, du bør gå, mens din app sover.
Hvis det er, hvad dit spørgsmål handler om, kan du checke ind på at gøre din ansøgning multi-threaded (eller multiprocessing). Dette koncept vil gælde for både server og klient. Du kan holde din primære tråd arbejder væk efter anmodning og uddelegere I / O til en separat tråd, og lad det operativsystem, der tager sig af alle fartplansæsonen. I / O-tråd vil kø alle I / O-anmodninger, og de vigtigste tråd vil pligtskyldigt service dem, afleverer dem tilbage til I / O-tråd, når de er komplette. Desværre er jeg stadig ser i trådning mig så jeg kan ikke være af meget få yderligere hjælp. Det kan få en smule behåret, når du behandler multithreading eller multiprocessing fordi du er nødt til at se ud for ting som
race betingelser,
hårdknude, Og en lang række andre concurrency-relaterede problemer.