Compartir a través de


Eventos asincrónicos y simultaneidad

La plataforma Azure Sphere admite varios mecanismos comunes de POSIX y Linux para controlar eventos asincrónicos y simultaneidad, incluidos bucles de eventos y pthreads POSIX.

Las muestras demuestran cómo usar bucles de eventos de Azure Sphere para administrar de forma segura escenarios basados en eventos. Por ejemplo, la muestra de UART se pausa hasta que el dispositivo recibe datos sobre UART o hasta que se presiona un botón para enviar datos a través de UART.

Los bucles de eventos son una parte estándar de la mayoría de las interfaces gráficas de usuario y un patrón de Linux estándar. Los bucles de eventos de Azure Sphere son una implementación específica de bucles de eventos que permiten a las aplicaciones de Azure Sphere recibir notificaciones del sistema, como eventos relacionados con actualizaciones.

Se recomienda el patrón de bucle de eventos por los siguientes motivos:

  • Los bucles de eventos de Azure Sphere son necesarios para administrar eventos del sistema como notificaciones de actualización de aplicaciones y del sistema operativo. Debes usar bucles de eventos para aplazar las actualizaciones del dispositivo.

  • Los bucles de eventos permiten programar de forma asincrónica de modo que varias tareas puedan avanzar simultáneamente.

  • Los bucles de eventos minimizan la sobrecarga de memoria. Cada subproceso lleva la sobrecarga de memoria de una pila separada. Las pilas de Linux se asignan con memoria virtual y aumentan a petición hasta un límite superior, por lo que no hay ningún costo fijo. Por lo tanto, los subprocesos son más difíciles de implementar en un sistema restringido como Azure Sphere MT3620 debido al costo de recursos adicional.

  • La sincronización entre subprocesos es compleja y puede producir problemas como interbloqueos. Los bucles de eventos son más sencillos en este sentido.

Aunque recomendamos usar bucles de eventos donde sea posible, si la aplicación requiere subprocesos, Azure Sphere admite pthreads POSIX. Es responsabilidad de la aplicación garantizar la ejecución segura del subproceso. Las llamadas de aplicación a algunas funciones applibs son seguras para subprocesos, pero otras no lo son, como se indica en los archivos de encabezado. Si el archivo de encabezado no menciona la seguridad de subprocesos, debe suponer que la función o biblioteca pertinente no es segura para subprocesos.