FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
SDL_CreateThread
Hola a todos.
En mi juego uso un thread SDL, pero ahora quiero usar varios y me encuentro con el problema que no puedo especificarle a cada thread de donde quiero que saque los datos. Hasta ahora tenía una lista y una función globales. La función del thread recorría todos los elementos de la lista: Código:
var ListaSendMessage : TList; function MiFuncionThread:Integer begin while ListaSendMessage.Count > 0 do ....... end; cuerpo principal ..... SDL_CreateThread(@MiFuncionThread,nil); ..... fin 1) Mantener la función globlal pero en vez de leer una Lista global pasarle por parámetro la Lista del equipo que queremos controlar (crearemos un thread por cada equipo y a cada uno de los threads le pasamos la lista del equipo en cuestión: Código:
TEquipo = class public ListaSendMessage : TList; end; function MiFuncionThread(ListaSendMessage : TList):Integer begin while ListaSendMessage.Count > 0 do ....... end; cuerpo principal ..... para cada equipo SDL_CreateThread(@MiFuncionThread,Equipo.ListaSendMessage ; ..... fin Código:
SDL_CreateThread(@MiFuncionThread(Equipo.ListaSendMessage),nil); 2) El segundo caso que he probado es que la función en vez de ser global sea de la Clase TEquipo que tiene su propia lista (como en el caso anterior) y lanzar cada thread sobre la función de cada Equipo: Código:
TEquipo = class public ListaSendMessage : TList; function MiFuncionThread:Integer; end; function TEquipo.MiFuncionThread:Integer begin while ListaSendMessage.Count > 0 do ....... end; cuerpo principal ..... para cada equipo Equipo := TEquipo.Create; SDL_CreateThread(@Equipo.MiFuncionThread,nil); ..... fin ¿ Alguien me puede decir lo que estoy haciendo mal ? Supongo que el primer caso es más correcto, una función global a la que le pasamos los datos que queremos, pero supongo que no le estoy pasando bien la lista de datos. Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|