2009-10-06 11 views
20

puedo crear un hilo por¿Qué es un hilo de trabajo y su diferencia de un hilo que creo?

Thread newThread= new Thread(DoSomeWork); 

. 
. 
. 
private void DoSomeWork() 
{ 
} 

¿Es esto diferente de un subproceso de trabajo? Si es ... ¿qué es mejor y cuándo debería usar un hilo de trabajo? Mi aplicación necesita muchos subprocesos para supervisar, actualizar ..

+1

¿Estás seguro de que tu aplicación necesita muchos hilos? El hecho de que haga esta pregunta sugiere que debe intentar minimizar el enhebrado ... –

+0

Qué debo hacer: Mis requisitos 1) Leer un socket y escribir en un archivo e insertar valores en DB 2) Seguir supervisando el DB y mostrando ESOS valores actualizados (o valores recién insertados) en la pantalla UI continuamente –

+0

Tj, podría ser útil si indica la plataforma (C#, Java) en las etiquetas. –

Respuesta

20

Generalmente, el término subproceso de trabajo se utiliza para describir otro subproceso del que está haciendo el trabajo en el subproceso actual, que en muchos casos es un primer plano o subproceso de interfaz de usuario. Sin embargo, esto no está hecho de piedra.

Los programas de Windows generalmente usan un único primario subproceso para administrar la interfaz de usuario y esto generalmente es sincrónico (es decir, las cosas se ejecutan una detrás de la otra). Si hay una tarea de larga ejecución, entonces para evitar hacer el bloque de UI en este tipo de programas, use un hilo de trabajo (que puede ser un hilo de primer plano o un hilo de fondo) para hacer el trabajo (de forma asincrónica al hilo primario) , y luego presentar los resultados nuevamente al hilo principal para consumir.

En los programas de Windows esto se hace a través de mensajes. Si utiliza bibliotecas particulares como, por ejemplo, el .NET Framework, las clases de utilidad especiales como ThreadPool y BackgroundWorker están disponibles para facilitar el manejo de subprocesos o de subprocesos. Pero como siempre puedes usar las primitivas plataforma para lograr el mismo fin.

+0

'En los programas de Windows, esto se hace a través de mensajes'. No exactamente. Si su programa de Windows realiza alguna operación prolongada en el hilo principal, bloqueará los mensajes durante la duración de esa operación a menos que llame a ciertas funciones (por ejemplo 'WaitForSingleObject()' y 'PeekMessage()') en un bucle para evitarlo . (Consulte [esta respuesta] (http://stackoverflow.com/questions/831265/i-need-a-message-pump-that-doesnt-mess-up-my-open-window/835781#835781) si lo desea para usar esa técnica). Engendrar un hilo para hacer esos procesos largos le permite evitar hacer esos bucles. – RobH

+0

Has malentendido. El último párrafo es sobre cómo se informa el subproceso primario ** UI ** (que será el bombeo de mensajes de Windows en el nivel más bajo) desde el secundario o, de hecho, uno mismo. No se trata de cómo hacer multitareas en el hilo principal. La razón de ser de los hilos secundarios es como en el párrafo 2 - para evitar el bloqueo del hilo de UI. –

7

No puedo pensar en mucha diferencia técnica aparte de la mera terminología.

Trabajador Los hilos se llaman así porque están esperando que algún trabajo venga y hace el trabajo cuando es asignado por otra persona. Por ejemplo, un proceso de servidor web recibe una solicitud y la asigna a un hilo de su grupo para su procesamiento. Ese hilo obedece el proceso y finaliza el trabajo y regresa al grupo. Hasta entonces, el hilo principal estará haciendo otra cosa.

Para su propósito: La supervisión de la base de datos continuamente es necesaria para identificar valores actualizados/nuevos. Puede ser solo un hilo, ejecutándose siempre en segundo plano, se activa periódicamente y actualiza los valores en la interfaz de usuario de DB.

10

Estoy tratando de explicar el concepto de manera simple, espero que ayude a comprender mejor el concepto de hilo de trabajador.

Definición general: -

A “subproceso de trabajo” es sólo un hilo que corre para realizar algún trabajo de fondo sobre el orden de su jefe (que podemos llamar “cliente”) y el resultado de trabajos de actualización de jefe.

definición técnica: -

Un subproceso de trabajo se define generalmente como un hilo que se activa en las peticiones de los clientes.

Ejemplo 1:

1- Tenemos tienda de pizza, donde hay 10 chicos que son expertos en la preparación de un delicioso pizzas. Estos se llaman como "hilos de trabajo".

2- Tenemos un tipo que recibe los pedidos de los clientes. Ese tipo es llamado como "cliente". Cuando llega un nuevo pedido, uno de los "hilos de trabajo" comienza a preparar la pizza y se actualiza al cliente una vez que se prepara la pizza.

3- Cuando hay menos de 10 pedidos, algunos de los trabajadores simplemente se sientan ideales.

4- Cuando hay más de 10 pedidos, los pedidos se ponen en cola de espera.

Ejemplo 2:

1- No es un servidor de aplicación que escucha en el puerto 8080.

2- llega una petición en el puerto 8080.

3- Un hilo oyente (se llama como "cliente") toma esa solicitud y la envía a un "hilo de trabajo" que completa la solicitud. En realidad, se mantiene un conjunto de "subprocesos de trabajo" (muchos objetos del programa "subproceso de trabajo") en el servidor de aplicaciones.

4- Si entran dos solicitudes al mismo tiempo, se asignan dos subprocesos de trabajo y la tarea se ejecuta simultáneamente.

Cuestiones relacionadas