Hilos (threads)#

Objetivo#

Comprender el funcionamiento de hilos en el microcontrolador ESP32.

Nota

En esta práctica, se utilizará el ESP32.

Descripción#

Los hilos, también conocidos como threads en inglés, son una forma poderosa de realizar múltiples tareas de manera concurrente en un programa de software. En MicroPython, los hilos nos permiten dividir la ejecución de nuestro programa en múltiples secuencias de instrucciones, lo que puede mejorar significativamente la eficiencia y la capacidad de respuesta de nuestras aplicaciones en plataformas como DualMCU ESP32.

El código proporcionado implementa dos hilos en MicroPython para el ESP32. Un hilo incrementa una variable compartida, mientras que el otro hilo imprime el valor compartido. Esto sirve como un ejemplo básico de cómo trabajar con hilos en MicroPython.

Nota

Recuerda que al trabajar con la DualMCU puedes intercambiar entre micrcontroladores mediante el interruptor de cambios, para esta práctica utilizaremos sólo el microcontrolador ESP32 por lo que debes cambiar el interruptor a la posición “B”.

Requisitos#

En la presente práctica, los componentes electrónicos se encuentran integrados en la placa de desarrollo.

Diagrama de conexión#

_images/pc_dual.jpg

Código#

El código crea dos hilos: uno para incrementar una variable compartida y otro para imprimir el valor compartido.

Los hilos se ejecutan durante 10 segundos antes de finalizar.

'''
Unit Electronics 2023
        >o)
        (_>
file: share_data.py
author: Cesar
version: 0.0.1
revision: 0.0.1
context: This code facilitates the sharing of data within a counter through the utilization of threads.

ESP32
'''
import _thread
import time

shared_variable = 0

def increment_thread():
    global shared_variable
    for _ in range(10):
        shared_variable += 1
        time.sleep(1)

def print_thread():
    global shared_variable
    for _ in range(10):
        print("Valor compartido:", shared_variable)
        time.sleep(1)

# Crear y lanzar los hilos
_thread.start_new_thread(increment_thread, ())
_thread.start_new_thread(print_thread, ())

time.sleep(10)

Resultados#

En la imagen proporcionada a continuación, se presenta una captura de pantalla de la salida obtenida al utilizar hilos. La representación visual ofrece una visión más concreta de cómo los hilos están interactuando y compartiendo datos durante la ejecución del código.

_images/shell.png

Conclusión#

El código demostrativo para MicroPython en ESP32 muestra la implementación de hilos para facilitar el intercambio de datos concurrente. La funcionalidad principal se centra en dos hilos: uno para incrementar una variable compartida y otro para imprimir ese valor. Este ejemplo básico ofrece una introducción práctica al uso de hilos en un entorno MicroPython.