Primera apagado, es importante saber si lo que estás haciendo es sens ible. Si están todos vinculados a la CPU, entonces no haga esto, IMO; un servidor web ya está altamente enhebrado, y suele ser un lugar ocupado para comenzar. Hay muchas posibilidades de que reduzcas la velocidad al usar múltiples núcleos. Sin embargo, ¡se verá genial para 1 usuario!
Si está vinculado a IO, entonces hay cualquier número de formas de hacerlo; lo preferible sería utilizar los métodos asíncronos incorporados de lo que sea que esté hablando, para que pueda usar IOCP en lugar de los hilos normales. Entonces para un NetworkStream
, usaría BeginRead(...)
etc.
Luego necesita unir todo junto. Mucho más maneras; Personalmente tiendo a usar Monitor.Wait
y Monitor.Pulse
, ya que esto evita ir al código no administrado (muchos manejadores de espera son en realidad proporcionados por el sistema operativo).
También tenga en cuenta: el enhebrado/paralelismo viene en un paquete junto con muchas maneras divertidas de fallar; Normalmente solo debe preocuparse demasiado por métodos 0 datos estáticos para sincronización, pero si tiene múltiples hilos en una sola solicitud haciendo cosas: tenga cuidado con los baches ... hay muchos.
La próxima versión de .NET tiene la intención de hacer que las continuaciones sean mucho más fáciles; Necesito echar un vistazo para ver cuán fácilmente podemos aplicar el código experimental actual a los escenarios de IOCP.
uso multi-threading –
Hola Abhishek, no puedes llamar a los 4 métodos a la vez, debe haber al menos un segundo retraso. Si aún desea llamar a los 4 métodos, entonces, como Davide Piras le dijo que utilice el multihilo y tome la ayuda de la clase "BackgroundWorker" porque el valor de retorno debe esperar hasta que se ejecuten los 4 métodos. – SharpUrBrain
@SharpUrBrain - ¿qué tiene que ver "un segundo" con algo?Y IMO BackgroundWorker es una mala elección en el nivel web –