[Python] Utilizzo di Readline con socket

Daniele Varrazzo piro a develer.com
Gio 31 Gen 2008 01:24:24 CET


De Santis Luca ha scritto:
>  > La soluzione è usare select o poll e leggere dei dati *solo* quando
>  > disponibili, impostando i socket in modalità non bloccante.
> 
> Ho spulciato tutta la documentazione di pys60 e putroppo select é 
> suppoerato solo per i dati in uscita, non per quelli in ingresso e per 
> le eccezioni :(

Allora ingoia l'amaro calice dei thread :) Spawna un thread per leggere dal 
socket in maniera bloccante. Usa una coda per comunicare i dati al thread 
principale che li consumerà.

Credo che sulla s60, tanto per darti una mano, non sia disponibile il modulo 
Queue, che sarebbe stato thread-safe. Quindo dovresti costruirti una classe 
coda wrappando una lista ordinaria e usando un oggetto Ao_lock per 
sincronizzare l'accesso.

I thread sono brutti, cattivi, cacca, hitler usava i thread... sono d'accordo 
su tutto. Ma ci sono momenti in cui fanno maledettamente comodo (questo lo è, 
a meno che non ti spieghino come installare twisted sul cellulare) e ci sono 
modi di usarli in cui funzionano senza dare rogne (una coda lo è). Secondo me 
rimuoverli dalla coscienza collettiva della programmazione è negativo quanto 
il loro stesso abuso.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


More information about the Python mailing list