2013/12/1 Giampaolo Rodola' <g.rod...@gmail.com>: > 2013/12/1 Roberto De Ioris <robe...@unbit.it>: >> >>> 2013/11/30 Manlio Perillo <manlio.peri...@gmail.com>: >>>> On 30/11/2013 13:18, Roberto De Ioris wrote: >>>>> >>>>> [...] >>>>>> >>>>>> Inoltre, curiosità personale visto che non ho mai fatto test, quale è >>>>>> la >>>>>> >>>>>> differenza tra sigtimedwait e kqueue + apposito filtro o epoll + >>>>>> signalfd? >>>>>> >>>>>> >>>>> >>>>> che kqueue non usa i segnali, quando un processo muore tutti i poller >>>>> in >>>>> ascolto vengono svegliati dal kernel. >>>> >>>> >>>> Vero, hai ragione; ricordavo male. >>>> kqueue ha sia il filtro EVFILT_PROC che EVFILT_SIGNAL. >>>> Io stavo assumendo il solo EVFILT_SIGNAL, che dovrebbe funzionare come >>>> signalfd su Linux, credo/spero. >>>> >>>> >>>>> Praticamente non hai nessuno dei >>>>> problemi dei segnali unix e (soprattutto) non ti costringe a modificare >>>>> la >>>>> logica del tuo programma (o a fare trucchi strani, tra cui includo il >>>>> mio >>>>> poller su waitpid suggerito nella mail di prima). >>>>> >>>>> Purtroppo su Linux kqueue non c'e' :) >>>>> >>>> >>>> Già, ed un poco alla volta mi sembra stiano aggiungendo interfacce per >>>> fare >>>> quello che kqueue fa già! A quando procfd? :) >>>> >>>> Peccato, perchè se Linux avesse implementato kqueue, c'era una remota >>>> possibilità di vederlo standardizzato da POSIX entro il prossimo >>>> decennio.. >>> >>> E' meglio di epoll()? Perchè? >>> >> >> "meglio" e' relativo. >> >> Sono diverse, a cominciare dal fatto che kqueue non si limita a monitorare >> file descriptors (ma anche processi, inode, timer...). E' una interfaccia >> generica per la programmazione ad eventi. >> >> Con una sola syscall fai tutto, in linux ne viene aggiunta una nuova per >> ogni funzionalita' (timerfd, eventfd, signalfd, blahblahfd...) poiche' si >> preferisce vedere tutto come un "file descriptor". >> >> Non so quali dei due approcci sia migliore, ma kqueue e' arrivata prima e >> piaceva a tutti, portandola su linux avremmo (forse) avuto meno mal di >> testa > > Capisco. > Mi sento però di spezzare una lancia a favore di epoll() per la > maggiore facilità di utilizzo. =) > > --- Giampaolo > https://code.google.com/p/pyftpdlib/ > https://code.google.com/p/psutil/ > https://code.google.com/p/pysendfile/
Segnalo un ottimo paper che riassume il tutto: http://www.eecs.berkeley.edu/~sangjin/2012/12/21/epoll-vs-kqueue.html Non pensavo che kqueue() fosse così versatile e mi unisco al vostro dolore: un vero peccato che non ci sia su Linux. --- Giampaolo https://code.google.com/p/pyftpdlib/ https://code.google.com/p/psutil/ https://code.google.com/p/pysendfile/ _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python