Ahora realizaremos varios ejemplos para aclarar y aumentar la comprensión del bucle de foreach paralelo en el lenguaje de programación C#.
Ejemplo 01: Agregar números a una lista utilizando el bucle de foreach paralelo en Ubuntu 20.04
En este ejemplo, escribiremos un programa C# para agregar números a una lista utilizando el bucle de foreach paralelo y marcaremos el número de subprocesos asignados simultáneamente a cada paso. Tendremos que usar diferentes bibliotecas como la tarea de subproceso y el enlace para acceder al monitoreo y la eficiencia del paralelo para cada bucle. Realizaremos este ejemplo en el Ubuntu 20.04 entorno.gramo
En el código anterior, hemos generado una lista utilizando el paralelo para cada bucle en el que los números se asignaron a la lista con la ayuda de la función de rango. Luego también imprimimos los ID de subprocesos en cada paso para monitorear el número de subprocesos utilizados al asignar valores a la lista. Después de ejecutar este archivo de programa en nuestro terminal de línea de comandos, obtendremos la siguiente salida:
La salida sugiere que a la lista se le asignaron 5 valores, y durante este proceso, se utilizaron dos hilos, lo que creó una diferencia de tiempo en la ejecución de esta tarea. Si podemos usar un bucle de foreach secuencial simple, la tarea se habría realizado en un solo hilo, y la ejecución sería mayor que el tiempo de ejecución del bucle de foreach paralelo. Aunque esto variaría, ya que depende del tamaño de la tarea en cuestión, ya que el bucle paralelo de foreach es más conveniente para el tamaño mayor de la tarea y el procesamiento porque divide la tarea en múltiples hilos y funciona en el enfoque de "dividir y conquistar".
Ejemplo 02: Número de control de hilos usando bucle de foreach paralelo en Ubuntu 20.04
En este ejemplo, controlaremos la creación del número de hilos cuando se ejecute un bucle de foreach paralelo. La biblioteca de subprocesos de tareas nos da acceso a una propiedad etiquetada como "grado máximo de paralelismo" que controla las operaciones paralelas de la clase de opciones paralelas y asignar un valor a esta propiedad define el número de operaciones paralelas que se ejecutarán durante el programa. Esta propiedad se envía al bucle paralelo de foreach a través de un argumento. Crearemos un programa C# para asignar números a una lista y definiremos el número de subprocesos para ejecutar esta tarea.
Como podemos ver que el número total de subprocesos utilizados para ejecutar esta tarea fue solo 2, ya que solucionamos este número al asignar valor al "grado máximo de paralelismo."En caso de una gran cantidad de procesamiento de datos, podemos variar el valor asignado al grado máximo de paralelismo; Esto nos ayudará a dividir la potencia de procesamiento de manera igual y eficiente entre las subasinas o las operaciones paralelas.
Ejemplo 03: Lista de impresión con variables de cadena utilizando el bucle de foreach paralelo en un programa C# en Ubuntu 20.04
En este ejemplo, imprimiremos elementos de una lista con variables de cadena utilizando el bucle de foreach paralelo en un programa C# en el Ubuntu 20.04 entorno. Primero inicializaremos una lista y le asignaremos valores manualmente e imprimiremos todos sus elementos como salida utilizando el bucle de foreach paralelo.
En el código anterior, realizamos una lista llamada continentes y agregamos nombres de los continentes a la lista antes de usar el paralelo para cada bucle. Agregamos la biblioteca de tareas de subprocesos para usar el bucle de foreach paralelo para nuestro código. El método de foreach paralelo toma en la lista y un nuevo objeto como parámetro para almacenar los valores temporalmente para cada iteración. Después de ejecutar este archivo de código en nuestro terminal de línea de comandos, obtendremos la lista de los nombres de los continentes que guardamos anteriormente en nuestra lista.
Ejemplo 04: Comparación de bucle de foreach tradicional con secuencial usando bucle de foreach paralelo en C# en Ubuntu 20.04
En este ejemplo, compararemos el bucle de Foreach tradicional con su propiedad secuencial con el bucle de foreach paralelo haciendo una tarea similar con ambos bucles con los bucles. El tiempo de ejecución de ambos bucles será diferente debido a su enfoque diferente a la tarea. Imprimiremos el contenido de la lista, que se inicializará antes de la operación, utilizando el bucle de Foreach tradicional con su propiedad secuencial y el paralelo para cada bucle.
En el programa C# anterior, estamos utilizando un bucle foreach normal y un bucle de foreach paralelo y calculando el tiempo necesario para ejecutar la tarea por ambos bucles; Usaremos la clase de cronómetro de la biblioteca "Diagnóstico" del lenguaje de programación de C#. La clase Stopwatch tiene un método "startNew ()", que inicia el stopwatch, y la función elsapsed () se usa para detener el cronómetro. Ambas funciones se hicieron accesibles haciendo un objeto de la clase de cronómetro.
La salida muestra que el bucle de foreach tradicional tardó menos tiempo en ejecutar la tarea que el bucle de foreach paralelo. La razón es que la ejecución de la tarea es la más adecuada para una operación de un solo hilo, y crear múltiples subprocesos para esta tarea sería lento, pero si la lista hubiera comprendido miles de datos, entonces el tiempo de ejecución sería viceversa Porque en ese escenario enhebrar, la tarea sería eficiente y ahorrando tiempo. Entonces, al usar el bucle de foreach paralelo, tenemos que observar el tamaño de la potencia de procesamiento requerida para esa operación y considerar cuál será el bucle adecuado para esa operación.
Conclusión:
Discutimos el bucle de foreach paralelo en el lenguaje de programación de C#. En este artículo, se discutió el significado del nombre "paralelo", así como las diferencias prácticas entre un bucle de foreach paralelo y un bucle de foreach estándar. Luego implementamos varios ejemplos del bucle de foreach paralelo en el Ubuntu 20.04 entorno para comprender más claridad sobre el tema. Llegamos a la conclusión de que el uso de un bucle de foreach paralelo debe ser monitoreado mientras se programan, ya que puede ir en cualquier dirección debido a su mecanismo de roscado; La tarea se divide, lo que lleva mucho tiempo en el caso de una tarea más pequeña.