Subprocesamiento (C# y Visual Basic)

El subprocesamiento permite al programa de Visual Basic o C# efectuar procesamientos simultáneos de modo que se puedan realizar varias operaciones a la vez. Por ejemplo, puede utilizar el subprocesamiento para supervisar los datos introducidos por el usuario, realizar tareas en segundo plano y controlar flujos de entrada simultáneos.

Los subprocesos tienen las siguientes propiedades:

  • Los subprocesos permiten al programa realizar procesamientos simultáneos.

  • El espacio de nombres System.Threading de .NET Framework facilita el uso de subprocesos.

  • Los subprocesos comparten los recursos de la aplicación. Para obtener más información, vea Utilizar subprocesos y subprocesamiento.

De forma predeterminada, un programa de Visual Basic o C# tiene un subproceso. Sin embargo, se pueden crear subprocesos auxiliares para ejecutar código en paralelo con el subproceso primario. Estos subprocesos se denominan a menudo subprocesos de trabajo.

Los subprocesos de trabajo se pueden utilizar para realizar tareas que llevan mucho tiempo o en las que el tiempo es crucial, sin acaparar el subproceso primario. Por ejemplo, los subprocesos de trabajo se utilizan a menudo en aplicaciones de servidor para atender las solicitudes entrantes sin esperar a que la solicitud anterior haya completado. Los subprocesos de trabajo también se utilizan para realizar tareas "en segundo plano" en aplicaciones de escritorio a fin de que el subproceso principal, que controla los elementos de la interfaz de usuario, siga respondiendo a las acciones del usuario.

Los subprocesos resuelven los problemas de rendimiento y capacidad de respuesta, pero también pueden originar problemas en materia de uso compartido de recursos, como interbloqueos y condiciones de carrera. Es mejor utilizar varios subprocesos para tareas que requieran recursos diferentes, como identificadores de archivos y conexiones de red. Asignar varios subprocesos a un único recurso probablemente produciría problemas de sincronización, y el bloqueo frecuente de los subprocesos cuando esperan la finalización de otros subprocesos invalida la finalidad de utilizar varios subprocesos.

Una estrategia común es utilizar subprocesos de trabajo para realizar tareas que llevan mucho tiempo o en las que el tiempo es crucial y que no requieran muchos de los recursos utilizados por otros subprocesos. Naturalmente, a algunos recursos del programa deberán tener acceso varios subprocesos. Es estos casos, el espacio de nombres System.Threading proporciona clases para sincronizar los subprocesos. Estas clases incluyen Mutex, Monitor, Interlocked, AutoResetEvent y ManualResetEvent.

Puede utilizar algunas de estas clases, o todas ellas, para sincronizar las actividades de varios subprocesos, pero los lenguajes Visual Basic y C# proporcionan una parte de la compatibilidad con los subprocesos. Por ejemplo, SyncLock (Instrucción) de Visual Basic y la instrucción Lock de C# proporcionan características de sincronización a través del uso implícito de Monitor.

Nota

En .NET Framework 4, la programación multiproceso se ha simplificado considerablemente con las clases Task y Parallel, Parallel LINQ (PLINQ), nuevas clases de colección simultáneas en el espacio de nombres System.Collections.Concurrent y un nuevo modelo de programación que está basado en el concepto de tareas en lugar de subprocesos.Para obtener más información, vea Programación paralela en .NET Framework.

Temas relacionados

Título

Descripción

Aplicaciones multiproceso (C# y Visual Basic)

Se describe cómo crear y utilizar subprocesos.

Parámetros y valores devueltos para procedimientos multiproceso (C# y Visual Basic)

Se describe cómo pasar y devolver parámetros con aplicaciones multiproceso.

Tutorial: Multithreading con el componente BackgroundWorker (C# y Visual Basic)

Muestra cómo crear una aplicación sencilla de multithreading.

Sincronización de subprocesos (C# y Visual Basic)

Describe cómo controlar las interacciones de los subprocesos.

Temporizadores de subprocesos (Visual C# y Visual Basic)

Describe cómo ejecutar procedimientos en subprocesos separados, en intervalos fijos.

Agrupación de subprocesos (Visual C# y Visual Basic)

Describe cómo utilizar un grupo de subprocesos de trabajo administrados por el sistema.

Cómo: Usar un grupo de subprocesos (C# y Visual Basic)

Muestra el uso sincronizado de varios subprocesos del grupo de subprocesos.

Subprocesamiento administrado

Describe cómo implementar los subprocesos en .NET Framework.

Capítulos destacados del libro

Threading en C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference

Asynchronous Methods en C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference

Threading and Synchronization en C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers