Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Nueva Característica: Multiprocesamiento

Nueva Característica: Multiprocesamiento
Artículo
Responder citando    Descargar mensaje  
Mensaje Nueva Característica: Multiprocesamiento 
 
Hace ya unos días Benoît anunció esta nueva característica:

Citar:

En la revisión #5076, añadí un nuevo componente llamado gb.task que te permite ejecutar una clase en segundo plano.

Internamente, "simplemente" se bifurca el intérprete. Pero en realidad no es tan simple

¿Cómo funciona?

Una vez que marcas gb.task en el IDE obtienes una nueva clase denominada "Task".

Para ejecutar una clase en segundo plano:

  • Esa clase debe heredar de Task.
  • También debe contener un método público llamado "Main" que no toma argumentos ni retorna valor. Éste es el método que se ejecutará en segundo plano.


Al instanciar la clase el nuevo objeto se ejecutará automáticamente tan pronto como el bucle de eventos comience a ejecutarse.

El objeto tarea disparará un evento "Kill" cuando haya terminado.

Puedes esperar a que una tarea termine usando su método Wait().

Puedes detener una tarea invocando a su método Stop().

Puedes obtener el identificador de proceso de la tarea mediante su propiedad Handle.

Debido a que el método se ejecuta mediante un sub-proceso tiene acceso a cualquier otra parte del programa, excepto que el proceso principal que ejecuta la tarea no verá ningún cambio que ésta realice.

El proceso principal puede modificar algunas variables públicas de la clase Task como un modo de definir los argumentos de esa tarea. Sin embargo, todavía no está implementada la posibilidad de que la tarea hable con el proceso principal para devolverle el resultado de su trabajo.

Tal vez, el método Main() de la tarea tendrá un valor de retorno de tipo Variant que será serializado de forma transparente, enviado al proceso principal y deserializado. Una alternativa sería redireccionar la salida estándar de la tarea a una canalización (tubería) que será leída por el proceso principal.

O tal vez implemente ambas soluciones... todavía no lo sé.

Otra cuestión: no creo que gb.qt4 o gb.gtk pueda usarse después de la bifurcación (fork) del intérprete.

Díganme qué les parece.


(Si notan algún error en la traducción del mensaje por favor me avisan)

El mensaje es bastante claro, se trata de dotar a gambas de una mayor facilidad para manejar sub-procesos del sistema de manera que puedan ejecutarse tareas en paralelo y en segundo plano.

Así como Benoît lo ha pensado, no es una característica que dote a gambas de un mecanismo robusto de multitarea como en otros lenguajes que proveen esta posibilidad mediante hilos (hebras) o procesos del sistema, pero seguramente resultará útil en una gran variedad de situaciones en las que o se utilizaban timers o procesos del sistema mediante SHELL.

Así que a seguir de cerca esta nueva característica y a repasar la gestión de procesos de Linux.

Saludos.



 
última edición por fabianfv el Miercoles, 29 Agosto 2012, 18:10; editado 1 vez 
fabianfv - Ver perfil del usuario Enviar mensaje privado  
fabianfv [ Miercoles, 29 Agosto 2012, 15:06 ]
 


Nueva Característica: Multiprocesamiento
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Nueva Característica: Multiprocesamiento 
 
Interesante.... a ver si añade algún ejemplo



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 29 Agosto 2012, 19:20 ]
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno