Co jsou neblokující zásuvky?
Co jsou neblokující zásuvky?

Video: Co jsou neblokující zásuvky?

Video: Co jsou neblokující zásuvky?
Video: Chytré zásuvky TP-LINK Tapo 100 a 110 Recenze + Návod 2024, Smět
Anonim

ne - blokování zásuvek . Řešení tohoto problému se nazývá " ne - blokování zásuvek ". Ve výchozím nastavení TCP zásuvky jsou v " blokování Když například zavoláte recv() pro čtení ze streamu, řízení se vašemu programu nevrátí, dokud není ze vzdáleného místa načten alespoň jeden bajt dat.

Co je tedy blokující a neblokující zásuvka?

v blokování režim, recv, odeslat, připojit (pouze TCP) a přijmout (pouze TCP) zásuvka Volání API budou blok na dobu neurčitou, dokud nebude provedena požadovaná akce. v ne - blokování režimu se tyto funkce okamžitě vrátí. vybrat vůli blok až do zásuvka je připraven.

Někdo se může také zeptat, jsou zásuvky ve výchozím nastavení blokovány? Podle výchozí , TCP zásuvky jsou umístěny v a blokování režimu. To znamená, že ovládací prvek není vrácen do vašeho programu, dokud není dokončena určitá operace.

Pokud jde o toto, jak uděláte neblokující zásuvku?

Pro označení a zásuvka tak jako ne - blokování , používáme systémové volání fcntl. Zde je příklad: int flags = guard(fcntl(socket_fd, F_GETFL), "nepodařilo se získat příznaky souboru"); guard(fcntl(socket_fd, F_SETFL, příznaky | O_NONBLOCK), "nemohl soubor příznaky souboru");

Co je blokování zásuvky?

A zásuvka může být v " režim blokování “nebo „neblokování režimu ." Funkce zásuvky v blokování (nebo synchronní) režimu nevracejte se, dokud nebudou moci dokončit svou akci. Tomu se říká blokování protože zásuvka jehož funkce byla volána nemůže nic dělat - je zablokována - dokud se volání nevrátí.

Doporučuje: