[Jde-dev] Metodos asíncronos, no-bloqueantes y threads en ICE
Roberto Calvo
rocapal en libresoft.es
Lun Abr 5 11:10:18 CEST 2010
El lun, 05-04-2010 a las 10:57 +0200, Sara Marugan escribió:
> Interesante. Entonces se puede utilizar conjuntamente ICE 3.3.1 e ICE
> 3.4.0 en jderobot-5.0?
mmm si el API es compatible y tienes las dos versiones instaladas
supongo que si.
Pero lo que he comentado sobre las versiones, es que para el mecanismo
de AMI hay que tener cuidado porque cambia el api de la versión 3.3.1 a
la 3.4.0. No voy a utilizar las 2, de hecho sólo utilizo la 3.3.1 de
momento ya que es la versión de referencia para JDEROBOT.
un saludo!
>
> un saludo
>
>
> Roberto Calvo wrote:
> > Buenas!
> >
> > Os comento un problema que he tenido durante todo el dÃa de hoy y que he
> > encontrado varias soluciones en ICE 3.3.1 e ICE 3.4.0 y querÃa dejarlo
> > documentado por si alguna vez necesitáis utilizar llamadas
> > no-bloqueantes en vuestra interfaz.
> >
> > El caso, es que hay una llamada ICE de mi interface que es
> > startRecording, que simplemente tiene que empezar a grabar vÃdeo en
> > disco. La llamada no quiero que sea bloqueante, es decir alguien la
> > llama, y se le devuelve que ha empezado bien la grabación y listo. Y de
> > alguna manera cuando termine, que notifique a quien le llamo, pero que
> > no sea bloqueante.
> >
> > El caso es que si dentro de la implementación de la llamada que ofrece
> > el interface, utilizo ICE::Thread, o phtreads, o execv, o system, o
> > forks para realizar la grabación ... no retorna nunca esa llamada del
> > interfaz hasta que termina el thread. Es decir, da igual los threads que
> > crees nuevos, hasta que no terminen no retorna la llamada al interfaz.
> >
> > Tampoco vale la opción, que he probado, y que usó David para el
> > camera-server (AMD), que permite que las llamadas se encolen, y eso
> > significa que se puedan atender nuevas peticiones aunque no se haya
> > procesado las anteriores (pero hasta que no termine el proceso de la
> > imagen no se devuelve el retorno de la llamada).
> >
> > Quizás en el siguiente dibujo-diagrama queda más claro el problema que
> > tengo:
> >
> > (1) [Lo que pasa con una llamada a la interfaz]
> >
> > RecordingManager Recorder
> >
> > |----------- (startRecording) ------------->|
> > | |
> > (thread-ffmpeg)
> > |
> > |
> > |<------------ OK ------------------|
> >
> >
> > (2) [Lo que quiero que pase]
> >
> > RecordingManager Recorder
> >
> > |----------- (startRecording) ------------->|
> > | | (thread-ffmpeg)
> > |<------------ OK --------------------| |
> > |
> > |
> >
> >
> > He estado mirando por la doc de ICE y he visto sobre la definición de
> > métodos como AMD (Asynchronous Method Dispatch)[1] (lo que usa David en
> > cameraserver), pero eso es para poder atender varÃas a la vez, pero no
> > deja de ser bloqueante la llamada.
> >
> > Según veo en el manual[2], la versión 3.4.0 de Ice ha añadido una nueva
> > api para solucionar este problema ("AMI") Asynchronous Method
> > Invocation. Nosotros trabajamos con la versión 3.3.1 asà que en [3]
> > sobre la página 1024 empieza a contar todo sobre AMI y como
> > implementarlo. Ha cambiado la forma de usarse de a 3.3.1 a la 3.4.0 asÃ
> > que hay que tenerlo en cuenta dependiendo de donde ejecutemos el
> > software.
> >
> > Gracias a esta solución de programación asÃncrona (AMI) que permite ICE,
> > podemos llegar a implementar el escenario (2) que os he comentado
> > arriba. Aún no he subido el código al subversion porque necesito
> > retocarlo para que os compile bien, pero funciona :-). En cuento lo suba
> > os lo comento para que lo echéis un vistazo por si os interesa.
> >
> > un saludete!
> >
> >
> > [1] http://www.zeroc.com/doc/Ice-3.4.0/manual/Cpps.9.8.html
> > [2] http://www.zeroc.com/doc/Ice-3.4.0/manual/Cpp.7.15.html
> >
> > [3] http://www.zeroc.com/download/Ice/3.3/Ice-3.3.1.pdf
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Jde-developers mailing list
> > Jde-developers en gsyc.es
> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >
>
--
Roberto Calvo Palomino | Libre Software Engineering Lab (GSyC)
Tel: (+34) 91 488 85 23 | Universidad Rey Juan Carlos
rocapal en libresoft.es | Edif. Departamental II - Despacho 116
http://libresoft.es/ | c/Tulipán s/n 28933 Móstoles (Madrid)
GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tamaño : 198 bytes
Descripción: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
digitalmente
Url : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100405/5a9f80c4/attachment-0001.pgp
More information about the Jde-developers
mailing list