7
votes

GCC Atomic Countrines au lieu de Pthread?

J'ai trouvé après l'article: Utiliser les opérations de verrouillage atomique fournies par GCC pour remplacer les fonctions Pthread_MuTex_Lock

Il fait référence à Construits Atomic GCC .

Qu'est-ce que l'article suggère, consiste à utiliser GCC Atomic Countrins au lieu d'outils de synchronisation Pthread.

est-ce une bonne idée?

ps. Le poste MySQL est évidemment trompeur. Les comités atomiques ne peuvent pas remplacer tous les outils Pthread. Par exemple, le verrouillage nécessite que si un verrouillage ne peut pas être acquis, un fil doit attendre. En d'autres termes, il demande au système d'exploitation d'attendre, de sorte que l'attente est passive. Simple GCC intégré ne peut pas faire ça.


0 commentaires

5 Réponses :



5
votes

Est-ce une bonne idée?

Pas si vous avez déjà l'intention de compiler le code avec quelque chose d'autre que GCC. Est Pthreads qui vous causent des problèmes spécifiques?


4 commentaires

Aucun problème avec Pthreads, je me demandais simplement s'il serait enrichissant de passer à ces cométiches GCC. Je compilerai toujours à l'aide de GCC, aucune occasion de changer cela.


"Si ce n'est pas cassé, ne le répare pas" est ma devise.


Ces produits ont été définis par Intel, comme la page mentionne; Je m'attendrais à ce qu'ils travaillent aussi sur d'autres compilateurs.


Y compris ceux pour les processeurs non Intel?



1
votes

Non. Les constructions intégrées du GCC ont probablement un bon sens pour les gars qui écrivent des systèmes d'exploitation, de libc, et peut-être de Pthreads lui-même, mais pour votre application moyenne, il n'y a aucune raison de ne pas utiliser l'approche Pthreads.

Et même si vous utilisez toujours GCC, un jour, vous pouvez exécuter un outil d'analyse statique qui ne gérera pas toutes les extensions du client GCC.


0 commentaires

2
votes

Si vous utilisez déjà Pthread, et les fonctions de verrouillage Pthread font déjà ce que vous voulez, il est préférable d'utiliser les fonctions de verrouillage Pthread.

Ces cométirs atomiques ne sont que des blocs de construction pour les primitives de niveau supérieur; Rédaction de ces primitives de niveau supérieur a tendance à être délicate et toutes les erreurs peuvent provoquer des erreurs pouvant prendre beaucoup de temps à apparaître (car elles dépendent généralement du timing). Si vous avez déjà une bibliothèque avec des primitives de niveau supérieur qui font ce que vous voulez et que vous avez assez rapidement pour vos besoins (et ne supposez pas qu'ils sont trop lents simplement parce que vous devez faire un appel de la fonction), il est préférable de ne pas réinventer le roue.


0 commentaires

0
votes

Les comités atomiques ont du sens si vous voulez améliorer les performances. Construits vous permettent de minimiser la conflit causé par la sérialisation des mutiles. Lorsque vous utilisez des mutexes et créez une session critique, vous pouvez sérialiser l'accès à cette section de votre code; Dans le code de performance, vous voudrez peut-être essayer d'éviter les contentions en utilisant des données spécifiques à thread et lorsqu'il n'est pas possible d'utiliser des atomes. Le dernier cas est le verrouillage et le verrouillage, minimisez le temps pendant lequel le verrou est maintenu (à l'aide de la messagerie et de verrouillage à double coffre, bien que certaines réclamations ne fonctionnent pas - fonctionne pour moi).


0 commentaires