0

Les fonctions interverrouillées win32 fournissent un mécanisme d'opération atomique sur les données. Ils sont supposés être thread-safe et multiprocesseur-sûr. Que se passe-t-il si les données ne sont pas alignées?Opération verrouillée sur des données non autorisées

Que se passe-t-il si les données ne sont pas alignées? les opérations imbriquées sont encore atomiques? Ex .: incrémenter un entier qui n'est pas aligné.

Ty

Répondre

1

Si vous lisez la plupart des fonctions de l'API Interlocked, il y a des remarques qui précisent quelque chose le long des lignes de:

« La variable pointée par le paramètre Cumulande doit être aligné sur un 32- dans le cas contraire, cette fonction se comportera de manière imprévisible sur les systèmes x86 multiprocesseur et les systèmes autres que x86, voir _aligned_malloc. "

Pour un exemple, voir ceci MSDN doc. Cela signifie essentiellement que vous devez aligner vos données pour obtenir des résultats corrects, en utilisant _aligned_malloc.

Questions connexes