Mik azok a nem blokkoló aljzatok?
Mik azok a nem blokkoló aljzatok?

Videó: Mik azok a nem blokkoló aljzatok?

Videó: Mik azok a nem blokkoló aljzatok?
Videó: Detroit Lions #1 Team in NFL Free Agency? | Detroit Lions Podcast 2024, November
Anonim

nem - blokkoló aljzatok . A probléma megoldása az úgynevezett " nem - blokkoló aljzatok Alapértelmezés szerint a TCP aljzatok benne van " blokkolása Ha például a recv() függvényt meghívja egy adatfolyamból való olvasáshoz, a vezérlés nem kerül vissza a programba, amíg legalább egy bájt adatot ki nem olvas a távoli helyről.

Ennek megfelelően mi a blokkoló és mi a nem blokkoló aljzat?

Ban ben blokkolása mód, a fogadás, küldés, csatlakozás (csak TCP) és elfogadás (csak TCP) foglalat API hívások Blokk határozatlan ideig a kért művelet végrehajtásáig. Ban ben nem - blokkolása módban ezek a függvények azonnal visszatérnek. válasszon akaratot Blokk amíg a foglalat készen van.

Az is felmerülhet, hogy alapértelmezés szerint blokkolják a foglalatokat? Által alapértelmezett , TCP aljzatok a blokkolása mód. Ez azt jelenti, hogy a vezérlés csak akkor kerül vissza a programba, amíg egy adott művelet be nem fejeződik.

Ezzel kapcsolatban hogyan lehet nem blokkoló aljzatot készíteni?

Jelölni a foglalat mint nem - blokkolása , az fcntl rendszerhívást használjuk. Íme egy példa: int flags = guard(fcntl(socket_fd, F_GETFL), "nem sikerült beolvasni a fájljelzőket"); guard(fcntl(socket_fd, F_SETFL, flags | O_NONBLOCK), "nem sikerült készlet fájljelzők");

Mi az az aljzat blokkolása?

A foglalat lehet benne" blokkoló mód " vagy "nem blokkoló mód ." A funkciói aljzatok ban ben blokkolása (vagy szinkron) mód ne térjenek vissza, amíg be nem tudják fejezni tevékenységüket. Ezt nevezik blokkolása mert a foglalat amelynek függvényét meghívták, addig nem tehet semmit - blokkolva van - amíg a hívás vissza nem tér.

Ajánlott: