Wat is nie-blokkerende voetstukke?
Wat is nie-blokkerende voetstukke?

Video: Wat is nie-blokkerende voetstukke?

Video: Wat is nie-blokkerende voetstukke?
Video: Narcistische rode vlag nummer 1: trap er niet (meer) in!! 2024, Mei
Anonim

nie - blokkerende voetstukke . Die oplossing vir hierdie probleem word genoem " nie - blokkerende voetstukke ". By verstek, TCP voetstukke is in " blokkeer "-modus. Byvoorbeeld, wanneer jy recv() oproep om uit 'n stroom te lees, word beheer nie na jou program teruggestuur totdat ten minste een greep data vanaf die afgeleë werf gelees is nie.

Gevolglik, wat is blokkerende en nie-blokkerende sok?

In blokkeer modus, die recv, stuur, koppel (slegs TCP) en aanvaar (slegs TCP) sok API-oproepe sal blok onbepaald totdat die gevraagde handeling uitgevoer is. In nie - blokkeer modus, keer hierdie funksies onmiddellik terug. kies testament blok Tot die sok is gereed.

Mens kan ook vra, blokkeer voetstukke by verstek? Deur verstek , TCP voetstukke word in 'n geplaas blokkeer wyse. Dit beteken dat die beheer nie na jou program teruggestuur word totdat een of ander spesifieke bewerking voltooi is nie.

Wat dit betref, hoe maak jy 'n nie-blokkerende sok?

Om a sok as nie - blokkeer , gebruik ons die fcntl-stelseloproep. Hier is 'n voorbeeld: int vlae = guard(fcntl(socket_fd, F_GETFL), "kon nie lêervlae kry nie"); guard(fcntl(socket_fd, F_SETFL, vlae | O_NONBLOCK), "kon nie stel lêervlae");

Wat is sokblokkering?

A sok kan wees in" blokkeermodus " of "nieblokkerend wyse ." Die funksies van voetstukke in blokkeer (of sinchronies) wyse nie terugkeer voordat hulle hul aksie kan voltooi nie. Dit word genoem blokkeer omdat die sok wie se funksie genoem is, kan niks doen nie - word geblokkeer - totdat die oproep terugkeer.

Aanbeveel: