2009-02-17 10 views
6

Sto cercando una libreria pool di thread in .NETLeggero discussione Pool Biblioteche in .NET

  • dovrei grado di spingere circa 100.000 operazioni, pertanto, dovrebbe fornire il supporto per "blocco". (ovviamente non posso spingere tante attività contemporaneamente, viene quindi sostenere alcuni blocco aggiungendo nuovi compiti, e deve bloccare il filo fino ad una nuova slot è disponibile)
  • Non eccessivamente complicate
  • Non è così costoso (memoria - CPU saggio)
  • free/Open Source (Commercial-friendly License)

ho già la mia soluzione che supporta tutte queste, ma io non sono molto sicuro se è la migliore realizzazione o non. Quindi voglio esaminare altre librerie.

Questo verrà utilizzato principalmente per le richieste HTTP, quindi meno attesa di risposta della CPU. Ciò significa che 100 thread concomitanti sono accettabili.

risposta

0

Grazie per tutte le risposte, dopo aver esaminato altre librerie ho notato che sono tutte molto complicate per quello che stavo cercando.

Mi attengo alla mia implementazione, che è fondamentalmente un'implementazione della coda di blocco attorno allo Threading.Thread() e funziona perfettamente.

2

Perché non utilizzare solo .NET ThreadPool?

+1

Avete mai utilizzato effettivamente Threadpool .NET e letto i miei requisiti? Perché .Net Threadpool non è adatto a questo. Impossibile gestire 100 thread alla volta, consuma troppa memoria e non esiste alcuna funzionalità di blocco per progettazione. –

1

Se si dispone di molte attività, prendere in considerazione l'implementazione di una piattaforma middleware service bus o di terze parti come BizTalk. Se è troppo, allora semplicemente Message Queuing.

Inoltre, se si dispone di SQL Server e si desidera eseguire facilmente il backup e la gestione della coda, prendere in considerazione lo SQL Server Service Broker.

3

Il meglio che ho visto di recente è PowerThreading library di Jeffery Richter. Potresti anche voler controllare this Channel 9 video

La cosa bella della libreria PowerThreading è che fa un uso efficiente del ThreadPool consentendo la condivisione di un singolo thread su molte richieste.

0

Ho trovato un interesting take sul ThreadPool da questo utente su CodeProject. È un ThreadPool istanziato (quindi non statico e shred attraverso i thread) e ha diverse funzionalità per personalizzare le prestazioni.

2

Controllare Microsoft CCR. Ha un pool di thread molto efficiente e ha delle primitive che rendono semplice la gestione di molte eustanding richieste di I/O asincrone.

Sotto il suo modello, se il proprio I/O è veramente asincrono, il numero di thread necessario sarebbe esattamente il numero di core sulla confezione. Qualcosa di più è uno spreco.

1

.Net 4.0 è l'aggiunta della Biblioteca Task Parallel che avrà il supporto diretto per questo. Se non ne sei a conoscenza, è disponibile sia come CTP standalone basato su .Net 3.5 sia come parte del CTP di Visual Studio 2010 reso disponibile lo scorso autunno. Ecco un collegamento allo team blog che ha più informazioni e un puntatore al download.