Une opération atomique est indivisible. Ce terme est utilisé pour décrire les transactions dans les bases de données, les accès de bas niveau dans les programmes multithread et les opérations du système de fichiers, entre autres.
Que signifient atomicet nonatomicsignifient les déclarations de propriété? @property(nonatomic, retain) UITextField *userName; @property(atomic, retain) UITextField *userName; @property(retain) UITextField *userName; Quelle est la différence opérationnelle entre ces trois?
Comment fonctionne atomique / volatile / synchronisé en interne? Quelle est la différence entre les blocs de code suivants? Code 1 private int counter; public int getNextUniqueIndex() { return counter++; } Code 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } Code 3 private volatile int counter; public …
Dans le livre Effective Java, il indique: La spécification du langage garantit que la lecture ou l'écriture d'une variable est atomique sauf si la variable est de type longou double[JLS, 17.4.7]. Que signifie "atomique" dans le contexte de la programmation Java ou de la programmation en général?
Je comprends en quelque sorte que AtomicInteger et d'autres variables atomiques permettent des accès simultanés. Dans quels cas cette classe est-elle généralement utilisée?
Je comprends que std::atomic<>c'est un objet atomique. Mais dans quelle mesure atomique? À ma connaissance, une opération peut être atomique. Qu'entend-on exactement par rendre un objet atomique? Par exemple, s'il y a deux threads exécutant simultanément le code suivant: a = a + 12; Alors toute l'opération est-elle (disons add_twelve_to(int)) …
En général, for int num, num++(ou ++num), en tant qu'opération de lecture-modification-écriture, n'est pas atomique . Mais je vois souvent des compilateurs, par exemple GCC , générer le code suivant ( essayez ici ): Puisque la ligne 5, qui correspond à num++une instruction, peut-on conclure que num++ c'est atomique dans …
Je sais que les opérations composées telles que i++ne sont pas thread-safe car elles impliquent plusieurs opérations. Mais la vérification de la référence avec elle-même est-elle une opération thread-safe? a != a //is this thread-safe J'ai essayé de programmer cela et d'utiliser plusieurs threads mais cela n'a pas échoué. Je …
S'il y a deux threads accédant à une variable globale, de nombreux didacticiels indiquent que la variable est volatile pour empêcher le compilateur de mettre en cache la variable dans un registre et qu'elle ne soit donc pas mise à jour correctement. Cependant, deux threads accédant tous les deux à …
Quelle est la différence entre les méthodes lazySetet setde AtomicInteger? La documentation n'a pas grand-chose à dire sur lazySet: Définit finalement la valeur donnée. Il semble que la valeur stockée ne sera pas immédiatement définie sur la valeur souhaitée, mais qu'elle sera plutôt programmée pour être définie dans le futur. …
Quelle est la différence entre atomique et critique dans OpenMP? je peux le faire #pragma omp atomic g_qCount++; mais n'est-ce pas la même chose que #pragma omp critical g_qCount++; ?
En général, que pouvons-nous prendre pour acquis lorsque nous ajoutons à un fichier sous UNIX à partir de plusieurs processus? Est-il possible de perdre des données (un processus écrasant les modifications de l'autre)? Est-il possible que les données soient mutilées? (Par exemple, chaque processus ajoute une ligne par ajout à …
Quel est le coût de l'opération atomique (n'importe laquelle des opérations de comparaison et d'échange ou d'ajout / décrémentation atomique)? Combien de cycles consomme-t-il? Interrompra-t-il d'autres processeurs sur SMP ou NUMA, ou bloquera-t-il les accès à la mémoire? Videra-t-il le tampon de réorganisation dans le processeur en panne? Quels seront …
Je veux écrire du code portable (Intel, ARM, PowerPC ...) qui résout une variante d'un problème classique: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } dans lequel l'objectif est d'éviter une situation dans laquelle les deux threads fontsomething . (Ce n'est pas …
Considérer: void foo() { std::vector<std::atomic<int>> foo(10); ... } Le contenu de foo est-il maintenant valide? Ou dois-je les parcourir explicitement et les initialiser? J'ai vérifié Godbolt et ça semble bien, mais la norme semble être très confuse sur ce point. Le constructeur std :: vector dit qu'il insère des instances …
J'ai écouté et lu plusieurs articles, discussions et questions sur le stackoverflow std::atomic, et je voudrais être sûr d'avoir bien compris. Parce que je suis toujours un peu confus avec la visibilité des écritures de la ligne de cache en raison de retards possibles dans les protocoles de cohérence de …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.