Kas ir nebloķējošās ligzdas?
Kas ir nebloķējošās ligzdas?

Video: Kas ir nebloķējošās ligzdas?

Video: Kas ir nebloķējošās ligzdas?
Video: AUGUSTA SARUNA/ENERĢIJAS/AKTUALITĀTES 2024, Novembris
Anonim

nav - bloķēšanas ligzdas . Šīs problēmas risinājums tiek saukts " nav - bloķēšanas ligzdas Pēc noklusējuma TCP rozetes ir iekšā " bloķēšana Piemēram, izsaucot recv(), lai lasītu no straumes, vadība netiek atgriezta programmā, kamēr no attālās vietnes nav nolasīts vismaz viens datu baits.

Attiecīgi, kas ir bloķējoša un nebloķējoša ligzda?

In bloķēšana režīms, recv, send, connect (tikai TCP) un pieņemšana (tikai TCP) kontaktligzda API zvani būs bloķēt uz nenoteiktu laiku, līdz tiek veikta pieprasītā darbība. In nav - bloķēšana režīmā šīs funkcijas atgriežas nekavējoties. izvēlieties gribu bloķēt līdz kontaktligzda ir gatavs.

Var arī jautāt, vai ligzdas pēc noklusējuma bloķē? Autors noklusējuma , TCP rozetes tiek ievietoti a bloķēšana režīmā. Tas nozīmē, ka vadība netiek atgriezta jūsu programmā, kamēr nav pabeigta noteikta darbība.

Saistībā ar to, kā izveidot nebloķējošu ligzdu?

Lai atzīmētu a kontaktligzda kā nav - bloķēšana , mēs izmantojam fcntl sistēmas izsaukumu. Šeit ir piemērs: int karogi = aizsargs(fcntl(socket_fd, F_GETFL), "nevarēja iegūt failu karogus"); guard(fcntl(socket_fd, F_SETFL, karogi | O_NONBLOCK), "nevarēja komplekts failu karodziņi");

Kas ir kontaktligzdas bloķēšana?

A kontaktligzda var būt iekšā" bloķēšanas režīms " vai "nebloķēšana režīmā ." Funkcijas rozetes iekšā bloķēšana (vai sinhroni) režīmā neatgriezties, kamēr viņi nevar pabeigt savu darbību. To sauc bloķēšana tāpēc ka kontaktligzda kura funkcija tika izsaukta, neko nevar darīt - ir bloķēta - līdz zvans atgriežas.

Ieteicams: