Necesito crear un hilo en Delphi con las siguientes características:Delphi hilo que espera datos, los procesa y luego vuelve a la espera
- espera hasta que el hilo principal añade datos a una cola compartida.
- Procesa todos los datos en la cola, devolviendo los resultados al hilo principal (para esta última parte solo enviaré mensajes a la ventana principal). El procesamiento lleva mucho tiempo, por lo que se pueden agregar nuevos datos a la cola mientras el hilo de trabajo está procesando las entradas anteriores.
- Reanuda la espera, utilizando la menor cantidad posible de ciclos de CPU.
No puedo enviar mensajes a la secuencia, ya que no tiene un identificador de ventana.
¿Debo utilizar alguna variante de WaitForObject? Si es así, ¿cuál sería la espera? De lo contrario, ¿cómo puedo mantener el hilo en espera y luego despertarlo cuando aparezcan nuevos datos en la cola?
He leído Multithreading - The Delphi Way, que no parece responder a mi pregunta. Tal vez OmniThreadLibrary puede hacer lo que necesito; No puedo decir que hay poca documentación. No sé lo suficiente sobre los hilos en general para averiguar si la biblioteca ayudará aquí y cómo usarla (o incluso por qué usarla en lugar de simplemente trabajar con descendientes TThread).
Usted escribe: "He leído multihilo - El Camino de Delphi, que no parece responder a mi pregunta." pero lo hace en el capítulo 9. La relación productor-consumidor es lo que está buscando, y los semáforos son de hecho una forma de implementar tales colas. – mghie