Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Urgente: Problema con LockList (https://www.clubdelphi.com/foros/showthread.php?t=35312)

Vauli 06-09-2006 22:22:23

no tan Urgente: Problema con LockList
 
Hola a todos,

Soy nuevo por aqui, y bueno tengo un pequeño problema,
Tengo una aplicacion que usa Indy 9 (TCP server), al conectarse los clientes los agrego a una variable (Clients) del tipo TThreadList. Hasta ahi todo bien.

El problema viene cuando desde un procedimiento cualquiera (no tiene que ver con los procedimientos del componente) trato de enviar datos a un cliente que elijo desde una lista que contiene la misma informacion que la variable Clients, al intentar hacer un

--->> With Clients.locklist Do
Try
...
Finally
Clients.unlocklist;
End;
se queda "colgado" sin mensajes de error justo donde señala la flecha.
Alguien sabe como se puede solucionar esto?


Saludos
Adrian

delphi.com.ar 06-09-2006 23:25:44

Antes que nada, te quiero dar la bienvenida a los foros, e indicarte que todos las inquietudes de los foristas, tienen la misma prioridad, por lo que sugerimos no nombrar los hilos como "Urgente".


Cita:

Empezado por Vauli
...al conectarse los clientes los agrego a una variable (Clients) del tipo TThreadList...

El TIdTCPServer internamente maneja una lista similar con los clientes conectados, pudes acceder a ella mediante la propiedad Threads.


Cita:

Empezado por Vauli
...El problema viene cuando desde un procedimiento cualquiera (no tiene que ver con los procedimientos del componente) trato de enviar datos a un cliente que elijo desde una lista que contiene la misma informacion que la variable Clients, al intentar hacer un

--->> With Clients.locklist Do
Try
...
Finally
Clients.unlocklist;
End;
se queda "colgado" sin mensajes de error justo donde señala la flecha.
Alguien sabe como se puede solucionar esto?...

Seguramente el problema reside de que algún otro procedimiento ya haya bloqueado esta thread-sesitive critical section, y no la haya liberado aún. De ser así, tu procedimiento quedará bloqueado por tiempo indefinido hasta que el otro hilo cierre el bloqueo. Esa es la finalidad de las TThreadlist´s!

Saludos!

jachguate 06-09-2006 23:29:13

Buen día.

En primer lugar, bienvenido al ClubDelphi. Te recomiendo una lectura de la guia de estilo. Allí verás por que el título de tu post no es adecuado.

Hasta luego.

;)

Vauli 06-09-2006 23:34:22

Gracias por la bienvenida, y disculpen por el titulo (me deje llevar por la emocion)
Pues la verdad es que estuve revisando a ver si habia algun otro hilo bloqueando el acceso pero no encontre nada... ¿hay alguna forma de ver si hay alguien accediendo a la lista?

delphi.com.ar 06-09-2006 23:52:06

Cita:

Empezado por Vauli
¿hay alguna forma de ver si hay alguien accediendo a la lista?

Si!.. si haces un LockList y se queda esperando ser liberada, entonces esta bloqueada! :D

Si solo la bloquea tu código, probaría poner un breakpoint en esa línea ;)

jachguate 07-09-2006 00:06:14

Añado:

Si varios hilos están accediendo a LockList al mismo tiempo, ¡La idea es esa! que esté bloqueada y el 2o, 3er, 4o, etc. hilos tengan que esperar a que quienes llegaron primero usen y liberen la lista.

Saludos.

;)

Vauli 07-09-2006 01:59:08

Gracias a Todos por su atencion
El problema fue resuelto, y si era cierto que tenia el Thread Bloqueado, encontrar al culpable me llevo mas tiempo... :P

Gracias nuevamente a todos

Slds


La franja horaria es GMT +2. Ahora son las 17:18:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi