Što su neblokirajuće utičnice?
Što su neblokirajuće utičnice?

Video: Što su neblokirajuće utičnice?

Video: Što su neblokirajuće utičnice?
Video: Non-blocking I/O and how Node uses it, in friendly terms: blocking vs async IO, CPU vs IO 2024, Svibanj
Anonim

ne - blokiranje utičnica . Rješenje ovog problema se zove " ne - blokiranje utičnica ". Prema zadanim postavkama, TCP utičnice su u " blokiranje " način. Na primjer, kada pozovete recv() za čitanje iz toka, kontrola se ne vraća vašem programu sve dok se barem jedan bajt podataka ne pročita s udaljenog mjesta.

Prema tome, što je utičnica koja blokira, a što ne blokira?

U blokiranje način, recv, send, connect (samo TCP) i accept (samo TCP) utičnica API pozivi će blok na neodređeno vrijeme dok se tražena radnja ne izvrši. U ne - blokiranje modu, te se funkcije odmah vraćaju. odaberite će blok sve do utičnica je spreman.

Također se može pitati, blokiraju li se utičnice prema zadanim postavkama? Po zadano , TCP utičnice nalaze se u a blokiranje način rada. To znači da se kontrola ne vraća vašem programu dok se neka specifična operacija ne dovrši.

Što se toga tiče, kako napraviti utičnicu koja ne blokira?

Za označavanje a utičnica kao ne - blokiranje , koristimo sistemski poziv fcntl. Evo primjera: int flags = guard(fcntl(socket_fd, F_GETFL), "nije moguće dobiti zastavice datoteke"); guard(fcntl(socket_fd, F_SETFL, zastavice | O_NONBLOCK), "nije mogao skupa zastavice datoteke");

Što je blokiranje utičnice?

A utičnica može biti u " način blokiranja " ili "neblokirajući način rada ." Funkcije utičnice u blokiranje (ili sinkroni) način rada ne vraćaju se dok ne dovrše svoju akciju. Ovo se zove blokiranje jer utičnica čija je funkcija pozvana ne može učiniti ništa - blokira se - dok se poziv ne vrati.

Preporučeni: