Pregunta

Estoy comparando una cola de tareas/sistema de patrón de grupo de hilos con un norte-Shreads System en D. Soy realmente nuevo en el lenguaje de programación D pero he trabajado con hilos en C, Java y Python antes. Estoy usando la biblioteca de tango y estoy construyendo un servidor web como ejemplo.

Decidí usar tango.core.ThreadPool Como mi grupo de hilos, ya que mi proyecto se centra en la facilidad de uso y el rendimiento entre el enhebrado tradicional y las colas de tareas.

los documentación muestra que tengo 3 opciones:

  1. ThreadPool.wait() - Bloquea el hilo actual mientras el grupo consume tareas de la cola.
  2. ThreadPool.shutdown() - termina las tareas en el grupo pero no los que están en la cola.
  3. ThreadPool.finish() - Termina todas las tareas en el grupo y la cola, pero luego no acepte más.

Ninguna de estas cosas es lo que quiero. Tengo entendido que su lista de tareas debería ser capaz de crecer en estos sistemas. El servidor web es muy simple e ingenuo; Solo quiero que haga todo lo posible para escalar a muchas solicitudes concurrentes, incluso si su gestión de recursos solo consiste en consumir cosas en la cola de tareas lo más rápido posible.

Sospecho que se debe a que el hilo principal debe unirse a los otros hilos, pero estoy un poco oxidado en mi conocimiento de hilo.

¿Fue útil?

Solución 2

Descubrí que la forma en que estaba construyendo mi delegado contribuyó al bloqueo en alguna parte del código. En lugar de cerrar el objeto devuelto por SocketServer.accept, Ahora paso ese objeto como parámetro para mi delegado. No sé por qué esta fue la solución, pero el programa ahora funciona como se esperaba. Escuché que los cierres en D versión 1 están rotos; Tal vez esto tiene algo que ver con eso.

Otros consejos

qué pasa void append(JobD job, Args args) ? de los documentos funciona como el Executor.execute(Runnable) Formulario Java (envíe una tarea que se ejecute en algún momento en el futuro)

Tenga en cuenta que aquí es una cola de Lifo en lugar de la cola FIFO esperada, así que asigne suficientes trabajadores

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top