Partager via


Événements asynchrones et concurrence

Important

Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).

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é les 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 que l’utilisateur clique sur le bouton pour envoyer des données via UART.

Les boucles d’événements sont une partie standard de la plupart des interfaces utilisateur graphiques et d’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énements pour les raisons suivantes :

  • Les boucles d’événements Azure Sphere sont requises pour gérer les événements système tels que les notifications de système d’exploitation et de mise à jour d’application. Vous devez utiliser des boucles d’événements pour différer les mises à jour des appareils.

  • Les boucles d’événements permettent une 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 mémoire d’une pile distincte. Les piles Linux sont allouées avec de la mémoire virtuelle et augmentent à la demande à une limite supérieure afin qu’il n’y ait aucun coût fixe. Les threads sont donc plus difficiles à implémenter sur un système contraint 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 où cela est possible, si votre application nécessite des threads, Azure Sphere prend en charge les pthreads POSIX. Il incombe à l’application de garantir une exécution thread-safe. Les appels d’application à certaines fonctions applibatives sont thread safe, mais d’autres ne sont pas, comme indiqué dans les fichiers d’en-tête. Si le fichier d’en-tête ne mentionne pas la sécurité des threads, vous devez supposer que la fonction ou la bibliothèque appropriée n’est pas thread-safe.