c# - todos - ¿Qué es un subproceso de trabajo y su diferencia de un subproceso que creo?
como llamar a traves de subprocesos a controles de windows forms c# (3)
Estoy tratando de explicar el concepto de manera simple, espero que ayude a entender mejor el concepto de hilo de trabajo.
Definición general: -
Un "hilo de trabajo" es solo un hilo que se ejecuta para realizar un trabajo de fondo por orden de su jefe (podemos llamarlo "cliente") y actualizar el resultado del trabajo a jefe.
Definición técnica: -
Un subproceso de trabajo normalmente se define como un subproceso que se activa en las solicitudes de los clientes.
Ejemplo 1:
1- Tenemos una tienda de pizzas, donde hay 10 tipos que son expertos en preparar deliciosas pizzas. Estos son llamados como "hilos de trabajo".
2- Tenemos un chico que recibe los pedidos de los clientes. Ese tipo se llama "cliente". Cada vez que llega un nuevo pedido, uno de los "hilos de trabajo" comienza a preparar la pizza y la actualiza al cliente una vez que la pizza está preparada.
3- Cuando hay menos de 10 órdenes, algunos de los trabajadores simplemente se sientan ideales.
4- Cuando hay más de 10 pedidos, los pedidos se ponen en espera.
Ejemplo 2:
1- Hay un servidor de aplicaciones que escucha el puerto 8080.
2- Una solicitud entra en el puerto 8080.
3- Un hilo de escucha (llamado "cliente") toma esa solicitud y la envía a un "hilo de trabajo" que completa la solicitud. En realidad, hay un grupo de "subprocesos de trabajo" mantenidos (muchos objetos del programa "subproceso de trabajo") en el servidor de aplicaciones.
4- Si se reciben dos solicitudes al mismo tiempo, se asignan dos subprocesos de trabajo y la tarea se ejecuta simultáneamente.
Creo un hilo por
Thread newThread= new Thread(DoSomeWork);
.
.
.
private void DoSomeWork()
{
}
¿Es esto diferente de un hilo de trabajo? Si es ... ¿cuál es mejor y cuándo debo usar un subproceso de trabajo? Mi aplicación necesita tener muchos subprocesos que realicen monitoreo, actualización ...
Generalmente, el término subproceso de trabajo se usa para describir otro subproceso del que está realizando el trabajo en el subproceso actual, que en muchos casos es un subproceso de primer plano o UI. Sin embargo, esto no está fundido en piedra.
Los programas de Windows generalmente usan un solo hilo primario para administrar la IU y esto generalmente es sincrónico (es decir, las cosas se ejecutan una tras otra). Si hay una tarea de larga ejecución que realizar, entonces para evitar que la IU se bloquee en este tipo de programas, use un subproceso de trabajo (que puede ser un subproceso de primer plano o un subproceso de fondo) para realizar el trabajo (de forma asíncrona al subproceso principal) , y luego presentar los resultados de nuevo al hilo primario para consumir.
En los programas de Windows esto se hace a través de mensajes. Si usa bibliotecas particulares como, por ejemplo, el .net framework, entonces hay disponibles clases de utilidades especiales como ThreadPool y BackgroundWorker para facilitar el manejo de subprocesos en segundo plano o de trabajo. Pero como siempre puedes usar los primitivos de la plataforma para lograr el mismo fin.
No puedo pensar en una diferencia técnica mucho más que en la mera terminología.
Los subprocesos del trabajador llamaron así porque están esperando que venga un trabajo y lo hace cuando alguien más lo asigna. Por ejemplo, un proceso de servidor web recibe una solicitud y la asigna a un subproceso de su grupo para su procesamiento. Ese hilo obedece el proceso y finaliza el trabajo y vuelve al grupo. Hasta entonces el hilo principal estará haciendo otra cosa.
Para su propósito: Se requiere monitoreo de la base de datos continuamente para identificar valores actualizados / nuevos. Puede ser solo un hilo, ejecutándose siempre en segundo plano, se despierta periódicamente y actualiza los valores en la interfaz de usuario desde la base de datos.