Impossible de faire cela (voir le code) pour une raison quelconque. Documentation regardé, il ne semble pas être une raison de ne pas travailler ...Problème avec les structures std :: atomic et custom
struct vector {
float x, y, z;
};
std::atomic<vector> Name = {0};
Il dit que je ne peux pas l'initialiser avec une liste d'initialiseur, et quand je vais l'utiliser dans mon code, il dit qu'il n'a pas de membres.
Name.x = 4.f;
Name.y = 2.f * Name.x;
Name.z = 0.1f;
Non, ce n'est pas le cas.Ce que vous faites ici, c'est jouer avec un détail d'implémentation interne. Cela ne fonctionnera pas comme prévu. –
Vous contournez la barrière de mémoire. Ces opérations ne seront pas atomiques. –
Voulez-vous une structure avec des membres atomiques séparés, ou voulez-vous que la structure entière agisse comme un seul objet atomique? Quoi qu'il en soit, cela ne se compile que sur MSVC, où une structure de 12 octets n'est pas sans verrou, ce qui brise l'atomicité des autres opérations atomiques. https://godbolt.org/g/ji6ABT ** Il ne compile même pas sur d'autres compilateurs. ** –