Разлики между задействани от ниво и задействани от ръба в epoll

В момента пиша софтуер, който получава дескриптори, готови за I/O, използвайки epoll.
Прочетох мана, има нещо не съвсем ясно (за мен) написано за режимите, задействани от ниво и от ръба.
Разбрах го написано по следния начин (може да греша):
В случай на задействане на ръба (НЕ режимът по подразбиране, когато е посочен EPOLLET):
1. изпращаме ни известно количество данни
2. правим epoll_wait (), той ни казва дескриптор с готови данни
3. извличаме част от данните (не всички)
4. отново направете epoll_wait (), който се блокира за неопределено време поради наличието на данни в буфера.
Това поведение се дължи на факта, че този режим отчита само промяна в попълването на вътрешни буфери и ако данните не бъдат извлечени напълно, такава промяна не настъпва.
Съответно, за да избегнете тази ситуация, трябва да извлечете всичко от буферите
И сега - това, което не разбрах от мана:
- Как ще се държи повикването epoll_wait () в 4-та точка в задействания от нивото режим? ще бъде блокиран?
- какви са изричните/неявните предимства и недостатъци на всеки от режимите?
PS: googled. Гугли само същата мана и същата мана в ужасен машинен превод
