PDA

Ver la Versión Completa : Threads o algo parecido en Lazarus?


Richer
18-05-2010, 11:37:53
En fin, ya está funcionando el Lazarus, y ya empecé a programar la aplicación, pero me encontré con un problema que no sé solucionar... a ver si me podéis hechar un cable... ( Desde luego que cuando lo tenga acabado, tendréis un link para descargaroslo )

Estoy haciendo un servidor de streaming de video y audio en !live, y una de las partes del proyecto, es el programita que permitirá que cuando le des al botón, se conecte el servidor, que cuando le des al otro botón empiece la emisión de imágenes, pero... mira por donde... cuando le doy al botón de cualquiera de los streamings, se queda colgado el programa y no permite más... en fin, lo primero que se me viene a la cabeza... utilizar threads, pero... me quedo con la sorpresa que... en linux no hay, estoy estancao... :_(

Gracias de nuevo por vuestra atención.

P.D.: Falta añadir que para la ejecución de comandos, uso fpsystem('comando');

Ñuño Martínez
18-05-2010, 12:22:36
Free Pascal también tiene la clase TThread (http://www.freepascal.org/docs-html/rtl/classes/tthread.html), al igual que Delphi. La principal diferencia está en que no es un componente visual (lo cierto es que nunca entendí por qué en Delphi sí es visual). Eso quiere decir que tendrás que crear, configurar y eliminar los hilos "a mano", pero es casi lo mismo.

Aquí tienes una explicación detallada de TThread (http://wiki.lazarus.freepascal.org/Multithreaded_Application_Tutorial/es) con ejemplos.

Richer
18-05-2010, 12:27:44
Vale, gracias, pero... qué se tiene que hacer una unit nueva y escribirla de 0? es que desde delphi sé que había ya una clase tthread que la cabecera ya la tenías escrita y todo bien... ¿Eso no lo tiene, no? y... en caso que no lo tenga... se puede hacer una clase de 0 y programarla como un thread?

Ñuño Martínez
18-05-2010, 12:37:45
Sinceramente: no me he'nterado de ná. :confused:

¿Te has leído la descripción detallada? ¿Qué parte no entiendes? ¿Qué parte no te funciona?

Richer
18-05-2010, 12:47:38
Lo que me refiero es que... el windows el delphi, le das a nuevo, clase y ya te sale el thread. En el Lazarus, eso no existe, está para crear una unit y ya está... a parte del form, project y 4 cosas más que no tengo ni idea... en eso me refiero, que si hay que crear un unit, borrar todo el código que te escribe, y poner el del thread o realmente hay algo para crear la clase de thread directamente?

A parte, en el form ppal, a la que en el uses pongo el cthreads, peta... y en el debugger me pone ????????? :S hay que instalar algo también? estoy muy perdido con los threads en linux...

Ñuño Martínez
18-05-2010, 13:43:18
Lo que me refiero es que... el windows el delphi, le das a nuevo, clase y ya te sale el thread. En el Lazarus, eso no existe, está para crear una unit y ya está... a parte del form, project y 4 cosas más que no tengo ni idea... en eso me refiero, que si hay que crear un unit, borrar todo el código que te escribe, y poner el del thread o realmente hay algo para crear la clase de thread directamente?

Tu extiende la clase TThread en la unidad que consideres. Quizá sí sea mejor en una unidad nueva.

A parte, en el form ppal, a la que en el uses pongo el cthreads, peta... y en el debugger me pone ????????? :S hay que instalar algo también? estoy muy perdido con los threads en linux...

Si has leído la explicación que he enlazado, en concreto esta sección (Unidades necesarias para una aplicación de múltiples hilos) (http://wiki.lazarus.freepascal.org/Multithreaded_Application_Tutorial/es#Unidades_necesarias_para_una_aplicaci.C3.B3n_de_m.C3.BAltiples_hilos), Lazarus se encarga de añadir las unidades que necesita el proyecto así que déjale hacer, y más en cuanto a programas multi-hilo, ya que la unidad cthread es muy puñetera al respecto.

Léete bien la explicación que enlacé.

Richer
19-05-2010, 09:06:58
Buenos días, solo tengo que decir GRACIAS!!! ya he conseguido que funcionara :D gracias por la paciencia y la ayuda ^^ un abrazo mu grande!