![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
||||
|
||||
|
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 | |
|
|
|