Tipos de subprocesos en C# – Part 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *