Partager via


Événements asynchrones et accès concurrentiel

La plateforme Azure Sphere prend en charge plusieurs mécanismes POSIX et Linux courants pour gérer les événements asynchrones et la concurrence, y compris les boucles d’événements et les pthreads POSIX.

Les exemples montrent comment utiliser des boucles d’événements Azure Sphere pour gérer en toute sécurité des scénarios pilotés par les événements. Par exemple, l’exemple UART s’interrompt jusqu’à ce que l’appareil reçoive des données via UART ou jusqu’à ce qu’un bouton soit enfoncé pour envoyer des données via UART.

Les boucles d’événements sont une partie standard de la plupart des interfaces utilisateur graphiques et un modèle Linux standard. Les boucles d’événements Azure Sphere sont une implémentation spécifique de boucles d’événements qui permettent aux applications Azure Sphere de recevoir des notifications système telles que des événements liés aux mises à jour.

Nous recommandons le modèle de boucle d’événement pour les raisons suivantes :

  • Les boucles d’événements Azure Sphere sont nécessaires pour gérer les événements système tels que les notifications de mise à jour du système d’exploitation et des applications. Vous devez utiliser des boucles d’événements pour différer les mises à jour de l’appareil.

  • Les boucles d’événements permettent la programmation asynchrone afin que plusieurs tâches puissent progresser simultanément.

  • Les boucles d’événements réduisent la surcharge de mémoire. Chaque thread porte la surcharge de mémoire d’une pile distincte. Les piles Linux sont allouées avec de la mémoire virtuelle et augmentent à la demande jusqu’à une limite supérieure, de sorte qu’il n’y a pas de coût fixe. Les threads sont donc plus difficiles à implémenter sur un système limité tel que le MT3620 Azure Sphere en raison du coût supplémentaire des ressources.

  • La synchronisation entre les threads est complexe et peut entraîner des problèmes tels que des interblocages. Les boucles d’événements sont plus simples à cet égard.

Bien que nous vous recommandons d’utiliser des boucles d’événements lorsque cela est possible, si votre application nécessite des threads, Azure Sphere prend en charge les pthreads POSIX. Il incombe à l’application de garantir l’exécution thread-safe. Les appels d’application à certaines fonctions de bibliothèques d’applications sont thread-safe, mais d’autres ne le sont pas, comme indiqué dans les fichiers d’en-tête. Si le fichier d’en-tête ne mention pas la sécurité des threads, vous devez supposer que la fonction ou la bibliothèque appropriée n’est pas thread-safe.