Multi-threading es la característica más útil de C# que permite la programación simultánea de dos o más partes del programa para maximizar la utilización de la CPU. Cada parte de un programa se llama Thread. Entonces, en otras palabras, los hilos son procesos ligeros dentro de un proceso. C# admite dos tipos de subprocesos que son los siguientes:
Hilo de primer plano
Un subproceso que continúa ejecutándose para completar su trabajo incluso si el subproceso principal abandona su proceso, este tipo de subproceso se conoce como subproceso de primer plano. Al hilo de primer plano no le importa si el hilo principal está vivo o no, se completa solo cuando termina su trabajo asignado. O en otras palabras, la vida del hilo de primer plano no depende del hilo principal.
Ejemplo:
CSharp
// C# program to illustrate the // concept of foreground thread using System; using System.Threading; class GFG { // Main method static void Main(string[] args) { // Creating and initializing thread Thread thr = new Thread(mythread); thr.Start(); Console.WriteLine("Main Thread Ends!!"); } // Static method static void mythread() { for (int c = 0; c <= 3; c++) { Console.WriteLine("mythread is in progress!!"); Thread.Sleep(1000); } Console.WriteLine("mythread ends!!"); } }
Producción:
Main Thread Ends!! mythread is in progress!! mythread is in progress!! mythread is in progress!! mythread is in progress!! mythread ends!!
Explicación: En el ejemplo anterior, el subproceso se ejecuta después de que finaliza el subproceso principal. Entonces, la vida del subproceso no depende de la vida del subproceso principal. El subproceso thr solo finaliza su proceso cuando completa su tarea asignada.
Subproceso de fondo
Un subproceso que abandona su proceso cuando el método principal deja su proceso, estos tipos de subprocesos se conocen como subprocesos de fondo. O en otras palabras, la vida del subproceso de fondo depende de la vida del subproceso principal. Si el subproceso principal finaliza su proceso, entonces el subproceso de fondo también finaliza su proceso.
Nota: si desea utilizar un subproceso de fondo en su programa, establezca el valor de la propiedad IsBackground del subproceso en true .
Ejemplo:
CSharp
// C# program to illustrate the // concept of Background thread using System; using System.Threading; class GFG { // Main method static void Main(string[] args) { // Creating and initializing thread Thread thr = new Thread(mythread); // Name of the thread is Mythread thr.Name = "Mythread"; thr.Start(); // IsBackground is the property of Thread // which allows thread to run in the background thr.IsBackground = true; Console.WriteLine("Main Thread Ends!!"); } // Static method static void mythread() { // Display the name of the // current working thread Console.WriteLine("In progress thread is: {0}", Thread.CurrentThread.Name); Thread.Sleep(2000); Console.WriteLine("Completed thread is: {0}", Thread.CurrentThread.Name); } }
Producción:
In progress thread is: Mythread Main Thread Ends!!
Explicación: En el ejemplo anterior, la propiedad IsBackground de la clase Thread se usa para establecer el subproceso thr como un subproceso de fondo haciendo que el valor de IsBackground sea verdadero. Si establece el valor de IsBackground como falso, el subproceso dado se comporta como un subproceso en primer plano. Ahora, el proceso del subproceso finaliza cuando finaliza el proceso del subproceso principal.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA