Domanda

Sto confrontando una coda di attività/system pattern pool con un n-Threads System in D. Sono davvero nuovo nel linguaggio di programmazione D ma ho già lavorato con thread in C, Java e Python. Sto usando la biblioteca Tango e sto costruendo un web server come esempio.

Ho deciso di usare tango.core.ThreadPool Come pool di thread, poiché il mio progetto è focalizzato sulla facilità d'uso e sulle prestazioni tra il threading tradizionale e le code delle attività.

Il documentazione mostra che ho 3 opzioni:

  1. ThreadPool.wait() - Blocca il thread corrente mentre il pool consuma attività dalla coda.
  2. ThreadPool.shutdown() - Termina i compiti in piscina ma non quelli in coda.
  3. ThreadPool.finish() - Termina tutte le attività in piscina e in coda, ma poi non accetta più.

Nessuna di queste cose è quello che voglio. Comprendo che il tuo elenco di compiti dovrebbe essere in grado di crescere in questi sistemi. Il server Web è molto semplice e ingenuo; Voglio solo che faccia del suo meglio per ridimensionare a molte richieste simultanee, anche se la sua gestione delle risorse consiste solo nel consumare cose nella coda delle attività il più rapidamente possibile.

Sospetto che sia perché il thread principale deve unirsi agli altri thread, ma sono un po 'arrugginito sulla mia conoscenza del threading.

È stato utile?

Soluzione 2

Ho scoperto che il modo in cui stavo costruendo il mio delegato ha contribuito a bloccare in una parte del codice. Invece di chiudere l'oggetto restituito da SocketServer.accept, Ora passo quell'oggetto come parametro al mio delegato. Non so perché questa sia stata la soluzione, ma il programma ora funziona come previsto. Ho sentito che le chiusure nella versione 1 sono rotte; Forse questo ha qualcosa a che fare con esso.

Altri suggerimenti

che dire void append(JobD job, Args args) ? dai documenti funziona come il Executor.execute(Runnable) Modulo Java (inviare un'attività da eseguire un po 'di tempo in futuro)

Nota che qui è una coda di liwo invece della coda FIFO prevista, quindi alloca abbastanza lavoratori

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top