Perché non fai una abstract factory per istanziare la parte in c++, distruggendo quindi l'istanza e tutto il resto, quando necessario? Il 08/mar/2015 15:12 "Alessandro Re" <a...@ale-re.net> ha scritto:
> Ciao Marco, > > intanto grazie per la risposta :) > > 2015-03-08 7:54 GMT+00:00 Marco Giusti <marco.giu...@posteo.de>: > > Come registri le callback? Gli oggetti in python sono referenziati da > > del codice python o solo dalle callback di c++? In questo caso basta > > che, nel momento in cui distruggi l'oggetto C, deregistri le callback > > e riduci il numero di referenze del metodo. Se i metodi di un oggetto > > P sono usati come callback di un solo oggetto C, al momento che > > tu rilasci tutte le callback non esistono più riferimenti all'oggetto > > python. > > Il problema è proprio la registrazione delle callback... Per ora ho un > meccanismo piuttosto primitivo: > quando un evento accade, viene chiamato un metodo on_evento(*args) di > python. > L'idea è che l'oggetto tiene una lista di callback da > chiamare per quell'evento, e quel metodo è definito più o meno come > > def on_evento(self, *args): > for callback in self._callbacks: > callback(*args) > > Però è per l'appunto primitivo, e non viene assolutamente gestita la > rimozione delle callback. Prima di avventurarmi ed inventare qualcosa > che cerchi di automatizzare la rimozione, volevo capire se c'era già > qualche pattern usato in questi casi. > > >> Come posso rendere sincrona (bloccante) l'invocazione di un comando? > > > > La prima idea che mi viene in mente è di infilare la callback dentro la > > send e di chiamare sleep per salvare qualche ciclo macchina: > > > > def send_data_blocking(data): > > def go(): > > free_to_go = True > > free_to_go = False > > send_data(data, callback=go) > > while not free_to_go: > > sleep(0.1) > > Grazie, proverò con la sleep :) (btw, in go() non ci andrebbe un > "nonlocal free_to_go"?) > > Ciauz > ~Ale > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python