![]() |
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| IP Networking Lær TCP / IP, Internet Protocol, Routing, rutere Network protokollene i UNIX og Linux forum. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Script til antall innkommende filer | hootdocta5 | Shell programmering og Skripting | 5 | 03-19-2009 10:19 |
| Info req: / var / ADM / meldinger - Kern.warning - forskjellige ID meldinger | Petrucci | Sun Solaris | 1 | 12-04-2008 01:30 |
| kjører et skript fra innkommende epost | jojo77 | UNIX for Dummies Spørsmål og svar | 7 | 02-22-2008 01:48 |
| Kontroller innkommende e-post til sendmail | kingdbag | UNIX for Dummies Spørsmål og svar | 1 | 01-25-2007 11:32 |
| rlogin / rsh innkommende port | andryk | High Level Programmering | 1 | 08-17-2004 11:21 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Jeg har noen klienter kobler til serveren (som bruker velger ()) og theyre forsøker å sende meldinger til hverandre. Hvordan kan jeg vente til skriving på stdin samtidig som jeg venter på data som sendes fra serveren? Bør jeg bruke velg () i min klient også? Hvor nøyaktig skjønt?
|
|
||||
|
Jeg er ikke helt sikker på hva spørsmålet ditt er å spørre, men det høres ut som du er bryting med at du trenger en sløyfe for å høre på klienttilkoblinger med velge på serveren din, men du må også gjøre nyttig arbeid. På samme måte i klienten, må du kanskje høre på brukerinndata men samtidig venter på svar fra serveren.
Jeg vet ikke hvilket språk du bruker, men jeg har gjort dette i PHP som setter en tynn wrapper rundt socket-relatert system anrop slik at de er ganske like. Du trenger å avgjøre om å foreta en velger () kaller blokkering eller ikke. hvis den ikke blokkerer, kan du bli spinning i hovedvisningen i loop, flere ganger ringer velger () uten resultat og likevel tygde opp mye av CPU-tiden. Du kan fastsette et tidsavbrudd hvor velg () blokker for 100 millisekunder eller sobefore bestemmer at det ikke data og fortsetter å kjøre andre koden. Dette har en tendens til å undergrave resultatene av søknaden din fordi det kan være ting du bør gå, mens app sover. Hvis det er det spørsmålet ditt er om, kan du sjekke inn gjør programmet multi-threaded (eller multiprocessing). Dette konseptet vil gjelde både serveren og klienten. Du kan holde hovedtråden arbeider bort på anmodning og delegere I / O i en egen tråd og la operativsystemet ta seg av alle scheduling. I / O tråden vil køen opp all I / O-forespørsler og hovedtråden vil dutifully tjenesten dem, levere dem tilbake til I / O tråden når de er ferdig. Dessverre jeg fortsatt ser på tråder meg så jeg kan ikke være mye mer hjelp. Det kan bli litt hårete når du håndtere multithreading eller multiprocessing fordi du må passe deg for ting som rase vilkår, vranglås, Og en rekke andre concurrency-relaterte problemer. |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|