Hva er ikke-blokkerende stikkontakter?
Hva er ikke-blokkerende stikkontakter?

Video: Hva er ikke-blokkerende stikkontakter?

Video: Hva er ikke-blokkerende stikkontakter?
Video: Kolonial.no | Hopp over butikken | Det er ikke lørdag i dag 2024, Kan
Anonim

ikke - blokkerende stikkontakter . Løsningen på dette problemet kalles " ikke - blokkerende stikkontakter ". Som standard er TCP stikkontakter er i " blokkering "-modus. For eksempel, når du kaller recv() for å lese fra en strøm, returneres ikke kontrollen til programmet før minst én byte med data er lest fra det eksterne stedet.

Følgelig, hva er blokkerende og ikke-blokkerende stikkontakt?

I blokkering modus, recv, send, koble til (kun TCP) og godta (kun TCP) stikkontakt API-kall vil blokkere på ubestemt tid til den forespurte handlingen er utført. I ikke - blokkering modus, returnerer disse funksjonene umiddelbart. velge vilje blokkere til stikkontakt er klar.

Man kan også spørre, blokkerer stikkontakter som standard? Av misligholde , TCP stikkontakter er plassert i en blokkering modus. Dette betyr at kontrollen ikke returneres til programmet før en bestemt operasjon er fullført.

Angående dette, hvordan lager du en ikke-blokkerende stikkontakt?

For å markere en stikkontakt som ikke - blokkering , bruker vi fcntl-systemkallet. Her er et eksempel: int flagg = guard(fcntl(socket_fd, F_GETFL), "kunne ikke hente filflagg"); guard(fcntl(socket_fd, F_SETFL, flagg | O_NONBLOCK), "kunne ikke sett filflagg");

Hva er stikkontaktblokkering?

EN stikkontakt kan være i " Blokkeringsmodus " eller "ikke-blokkerende modus ." Funksjonene til stikkontakter i blokkering (eller synkron) modus ikke gå tilbake før de kan fullføre handlingen. Dette kalles blokkering fordi det stikkontakt hvis funksjon ble kalt kan ikke gjøre noe - er blokkert - til anropet kommer tilbake.

Anbefalt: