[so] [tema5 lin]

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Wed May 23 21:22:14 EEST 2012


Andreea Hodea <hodea_andreea at yahoo.com> writes:
> Salve,
>
> Multumesc pentru raspuns, m-a ajutat.
>
> Acum nu reusesc sa dau de cap transmiterii fisierelor din dynamic. Pasii ar fi:
> - primesc pe sockfd EPOLLIN
> - adaug eventfd al conexiunii curente in pollul de in
> - primesc EPOLLIN pentru eventfd si apelez update_ptr_out pentru socket
> - cand primesc EPOLLOUT, scriu pe socket ce am citit asincron prin eventfd
> - daca mai am de citit din fisier, apelez update_ptr_in pentru eventfd
> - s.a.m.d.
>
> Sper ca am inteles bine. Acum ma deruteaza doua fraze din tema: "Tot
> folosind epoll se va aștepta notificarea încheierii operațiilor
> asincrone pe fișiere.",

Folosești eventfd pentru acest lucru. Planificarea unei operații I/O
asincrone înseamnă și configurarea unui descriptor eventfd. Acest
descriptor va fi adăugat în setul de descriptori așteptați de
epoll. Dacă descriptorul eventfd notifică o operație EPOLLIN înseamnă că
operația I/O asincronă planificată s-a încheiat.

> respectiv "Pentru încheierea operațiilor asincrone, folosiți
> io_getevents."

Încheierea înseamnă un fel de "cleanup & resource caliming". După ce
epoll s-a întors datorită notificării prin EPOLLIN din eventfd, se
folosește io_getevents pentru "definitivarea" operației. Înainte de
asta, apelezi read pe eventfd.

HTH,
Răzvan


More information about the so mailing list