Mis on mitteblokeerivad pistikupesad?
Mis on mitteblokeerivad pistikupesad?

Video: Mis on mitteblokeerivad pistikupesad?

Video: Mis on mitteblokeerivad pistikupesad?
Video: Пузкар (удмурт кино) 2024, November
Anonim

mitte - blokeerivad pistikupesad . Selle probleemi lahendust nimetatakse " mitte - blokeerivad pistikupesad Vaikimisi on TCP pistikupesad on " blokeerimine " režiimis. Näiteks kui kutsute voost lugemiseks recv(), ei tagastata juhtimist teie programmile enne, kui kaugsaidilt on loetud vähemalt üks bait andmeid.

Mis on seega blokeeriv ja mitteblokeeriv pistikupesa?

sisse blokeerimine režiim recv, send, connect (ainult TCP) ja aktsepteerimine (ainult TCP) pistikupesa API kõned blokk määramata ajaks, kuni nõutud toiming on tehtud. sisse mitte - blokeerimine režiimis naasevad need funktsioonid kohe. vali tahe blokk kuni pistikupesa on valmis.

Võib ka küsida, kas pistikupesad blokeerivad vaikimisi? Kõrval vaikimisi , TCP pistikupesad paigutatakse a blokeerimine režiimis. See tähendab, et juhtelementi ei tagastata teie programmi enne, kui mõni konkreetne toiming on lõpetatud.

Seoses sellega, kuidas teha mitteblokeerivat pistikupesa?

Märkida a pistikupesa nagu mitte - blokeerimine , kasutame süsteemikutset fcntl. Siin on näide: int lipud = guard(fcntl(socket_fd, F_GETFL), "ei saanud faililippe"); guard(fcntl(socket_fd, F_SETFL, lipud | O_NONBLOCK), "ei saanud seatud faililipud");

Mis on pistikupesa blokeerimine?

A pistikupesa võib olla" blokeerimisrežiim " või "mitteblokeeriv režiimis ." Funktsioonid pistikupesad sisse blokeerimine (või sünkroonne) režiimis ärge pöörduge tagasi enne, kui nad saavad oma tegevuse lõpule viia. Seda nimetatakse blokeerimine sest pistikupesa mille funktsiooni kutsuti, ei saa midagi teha - on blokeeritud - kuni kõne naaseb.

Soovitan: