Il s'agit donc d'une question très particulière:Est-ce que ce fil est sûr? (données partagées sans mutex/sémaphore)
J'utilise un système embarqué avec un seul cœur CPU.
J'ai un thread principal et une interruption. Ils partagent un flottant de 32 bits. L'interruption écrit le flotteur et le thread principal le lit. Les lectures et les écritures ne sont pas synchronisées.
La documentation du processeur indique que la lecture 32 bits est une opération à un cycle.
Ai-je raison de penser que le thread principal ne risque pas de lire une valeur corrompue? Ou y a-t-il d'autres facteurs?
Est-ce que l'écriture aurait deux cycles? –
La lecture et l'écriture doivent toutes les deux être atomiques pour que cela fonctionne. Si c'est le cas, vous êtes prêt à partir. S'il y a un problème avec cela, vous pourriez trouver une opération de mémoire où lecture et écriture sont à la fois atomiques, comme un octet. Vous pouvez ensuite l'utiliser comme sémaphore pour restreindre l'accès en lecture/écriture au flottant. –
De même, est-il toujours vrai que les opérations à un cycle sont atomiques sur des cœurs simples? La documentation indique explicitement que test_and_set est atomique. –