Je veux économiser de la mémoire en convertissant un compteur 32 bits existant en un compteur 16 bits. Ce compteur est incrémenté/décrémenté de manière atomique. Si je fais ceci:Puis-je incrémenter de manière atomique un compteur de 16 bits sur x86/x86_64?
- Quelles instructions dois-je utiliser pour atomic_inc (uint16_t x) sur x86/x86_64?
- Est-ce fiable sur les machines x86/x86_64 multi-processeurs?
- Existe-t-il une pénalité de performance à payer sur l'une de ces architectures pour cela?
- Si oui pour (3), quelle est la pénalité de performance attendue?
Merci pour vos commentaires!
A moins que vous n'ayez beaucoup de compteurs (et c'est beaucoup comme dans "mégaoctets") cela semble être un gros effort pour sauver 2 octets. Quel est le problème * réel * que vous essayez de résoudre ici? –
Ouais, j'ai un * lot * de ces compteurs s'élevant en mégaoctets. Chaque compteur de ce type représente des opérations en attente sur un bloc de mémoire correspondant. Quand le compteur descend à zéro, je suis censé déclencher une autre opération. – Sudhanshu
Copie possible de [Peut num ++ être atomique pour 'int num'?] (Https: // stackoverflow.com/questions/39393850/can-num-être-atomique-pour-int-num) –