Kas ühendamine blokeerib?
Kas ühendamine blokeerib?

Video: Kas ühendamine blokeerib?

Video: Kas ühendamine blokeerib?
Video: Teadlane teab: Kas mesilaste pidamine linnas on ohutu? (Liisa Puusepp) 2024, Aprill
Anonim

ühendada on blokeerimine vaikimisi helistada, kuid saate seda mitte teha blokeerimine sisestades lipu SOCK_NONBLOCK pesasse. ühendada () blokeerib kuni TCP 3-suunalise käepigistuse lõpetamiseni. Käepigistus kuulamispoolel toimub kernelis oleva TCP/IP-virnaga ja lõpetatakse ilma kasutaja protsessist teavitamata.

Samamoodi küsitakse, mis on blokeeriv ja mitteblokeeriv pesa?

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.

mis on blokeerimisfunktsioon? A blokeerimisfunktsioon põhimõtteliselt arvutab igavesti. Seda see tähendab blokeerimine . muud blokeerimisfunktsioonid ootaks IO toimumist. mitte- blokeerimine IO süsteem tähendab a funktsiooni alustab IO-toimingut, seejärel läheb jõudeolekusse ja käsitleb IO-toimingu tulemust, kui see juhtub.

Seejärel tekib küsimus, kas pistikupesa blokeerimine on lubatud?

aktsepteerima () blokeerib helistaja kuni ühenduse loomiseni. Kui sõnumite jaoks pole ruumi aadressil pistikupesa edastatava sõnumi hoidmiseks, siis send() blokeerib tavaliselt. Kui aadressil pole ühtegi sõnumit saadaval pistikupesa , vastuvõetud kõne ootab sõnumi saabumist.

Kas vali plokk?

Kui ajalõpu argument viitab objektile tüüpi struct timeval, mille liikmed on 0, vali () ei ole blokk . Kui ajalõpu argument on NULL, vali () blokeerib seni, kuni sündmus põhjustab ühe maskidest tagastamise kehtiva (nullist erineva) väärtusega.

Soovitan: