Je développe un petit système intégré sur un microcontrôleur ARM SANS SYSTÈME D'EXPLOITATION. Il y a plusieurs types d'interruptions (boutons, conversion de A à D, minuterie, etc.) et un seul thread. Je souhaite avoir une file d'attente FIFO à traiter où chaque routine de service d'interruption ajoute son événement à la file d'attente et le thread principal (et unique) supprime les événements de la file d'attente à traiter. Un accès clair à la structure de données de la file d'attente dans la routine de service d'interruption est dangereux, mais un spinlock entraînera un blocage parce que si le thread principal a le verrou et qu'une interruption se produit, l'ISR attendra indéfiniment le verrou.Spinlock dans IRQ sur un petit système embarqué
Bien sûr, je sais déjà que je peux désactiver les interruptions pendant que le thread principal dérange la file d'attente, mais ce n'est pas idéal.
Quelle est la meilleure façon de procéder ici?
Merci A