Որոնք են ոչ արգելափակող վարդակները:
Որոնք են ոչ արգելափակող վարդակները:

Video: Որոնք են ոչ արգելափակող վարդակները:

Video: Որոնք են ոչ արգելափակող վարդակները:
Video: Ինչ են պատմում թանկարժեք քարերը և ինչ բուժիչ հատկություններ ունեն 2024, Մայիս
Anonim

ոչ - արգելափակող վարդակներ . Այս խնդրի լուծումը կոչվում է « ոչ - արգելափակող վարդակներ Լռելյայն, TCP վարդակներ գտնվում են « արգելափակում « ռեժիմ: Օրինակ, երբ դուք զանգահարում եք recv() հոսքից կարդալու համար, կառավարումը չի վերադարձվում ձեր ծրագրին, քանի դեռ հեռավոր կայքից առնվազն մեկ բայթ տվյալ չի կարդացվել:

Ըստ այդմ, ի՞նչ է արգելափակող և ոչ արգելափակող վարդակը:

Մեջ արգելափակում ռեժիմ, recv, ուղարկել, միացնել (միայն TCP) և ընդունել (միայն TCP) վարդակից API-ի զանգերը կկատարվեն արգելափակել անորոշ ժամանակով, մինչև պահանջվող գործողությունը չկատարվի: Մեջ ոչ - արգելափակում ռեժիմ, այս գործառույթները անմիջապես վերադառնում են: ընտրել կամք արգելափակել մինչև վարդակից պատրաստ է.

Կարելի է նաև հարցնել՝ լռելյայն արգելափակվո՞ւմ են վարդակները։ Ըստ լռելյայն , TCP վարդակներ տեղադրված են ա արգելափակում ռեժիմ. Սա նշանակում է, որ կառավարումը չի վերադարձվում ձեր ծրագրին, քանի դեռ որոշակի գործողություն չի ավարտվել:

Ինչ վերաբերում է դրան, ինչպե՞ս եք պատրաստում ոչ արգելափակող վարդակ:

Նշել ա վարդակից ինչպես ոչ - արգելափակում , մենք օգտագործում ենք fcntl համակարգի զանգը։ Ահա մի օրինակ՝ int flags = guard(fcntl(socket_fd, F_GETFL), "could get file flags"); պահակ (fcntl(socket_fd, F_SETFL, դրոշներ | O_NONBLOCK), «չի կարող հավաքածու ֆայլի դրոշներ»);

Ի՞նչ է վարդակների արգելափակումը:

Ա վարդակից կարող է լինել « արգելափակման ռեժիմ » կամ «չարգելափակում ռեժիմ -ի գործառույթները վարդակներ մեջ արգելափակում (կամ սինխրոն) ռեժիմ մի վերադառնաք, քանի դեռ նրանք չեն կարող ավարտել իրենց գործողությունը: Սա կոչվում է արգելափակում քանի որ վարդակից որի ֆունկցիան կանչվել է, ոչինչ չի կարող անել, - արգելափակված է, մինչև զանգը չվերադառնա:

Խորհուրդ ենք տալիս: