2009-02-17 15 views
6

estoy buscando una biblioteca de grupo de subprocesos de .NEThilo fino de piscina Bibliotecas en .NET

  • que debería poder empujar unos 100.000 tareas, por lo tanto, debe proporcionar apoyo a "bloqueo". (obviamente no puede empujar tantas tareas a la vez, por lo que debería apoyar algunas de bloqueo al tiempo que añade nuevas tareas, y se debe bloquear el hilo hasta que una nueva ranura está disponible)
  • No es demasiado complicado
  • No es tan caro (memoria - CPU inteligente)
  • gratuito Fuente/Open (Comercial friendly Licencia)

ya tengo mi propia solución que acepta todos ellos, pero no estoy muy seguro de si se trata de la mejor aplicación o no. Entonces quiero ver otras bibliotecas.

Esto se utilizará principalmente para las solicitudes HTTP, por lo que menos espera la respuesta de la CPU. Eso significa que 100 subprocesos concurrentes son aceptables.

Respuesta

0

Gracias por todas las respuestas, después de pasar por otras bibliotecas noté que todas son bastante complicadas para lo que estaba buscando.

Me quedo con mi propia implementación que es básicamente una implementación de cola de bloqueo alrededor de Threading.Thread() y funciona muy bien.

2

¿Por qué no usar simplemente .NET ThreadPool?

+1

¿Alguna vez ha usado .NET Threadpool y ha leído mis requerimientos? Porque .Net Threadpool no es realmente adecuado para esto. No puede manejar 100 hilos a la vez, consumirá demasiada memoria y no hay características de bloqueo por diseño. –

1

Si tiene tantas tareas, considere implementar una plataforma de middleware de terceros service bus como BizTalk. Si eso es demasiado, entonces llana Message Queuing.

Además, si tiene SQL Server y desea hacer una copia de seguridad más sencilla de la cola, considérese el SQL Server Service Broker.

3

Lo mejor que he visto recientemente es PowerThreading library de Jeffery Richter. También es posible que desee consultar this Channel 9 video

Lo bueno de la biblioteca PowerThreading es que hace un uso eficiente del ThreadPool al permitir que un solo subproceso se comparta entre muchas solicitudes.

0

Encontré un interesting take en el ThreadPool por este compañero en CodeProject. Es un ThreadPool instanciado (por lo tanto, no estático y tritura a través de subprocesos) y tiene varias características para personalizar el rendimiento.

2

Echa un vistazo a CCR de Microsoft. Tiene un grupo de subprocesos muy eficiente y tiene primitivas que facilitan el manejo de muchas solicitudes de E/S asíncronas sobresalientes.

Según este modelo, ya que su E/S es realmente asíncrona, el número de subprocesos que necesitará será exactamente el número de núcleos en su caja. Cualquier cosa más es un desperdicio.

1

.Net 4.0 es la adición de la biblioteca de tareas en paralelo que tendrá el apoyo directo para esto. Si no está enterado, está disponible como un CTP independiente basado en .Net 3.5 y como parte del Visual Studio 2010 CTP que estuvo disponible el otoño pasado. Aquí hay un enlace al team blog que tiene más información y un puntero a la descarga.

Cuestiones relacionadas