Un mutex utilise au moins une instruction atomique justement pour garantir l'atomicité de la prise du mutex. Bref, un mutex va forcément coûter au moins aussi cher qu'une opération atomique, vu qu'elles sont à la base du verrouillage ... :-)
Aussi, 0.2 μs / 0.05 μs = 4. Pour les applications qui ne font pas usage trop fréquent de variables partagées/sections critiques ce n'est sans doute pas bien méchant, mais si une structure de donnée est très utilisée/mise à jour par beaucoup d'acteurs (disons, si je suis dans un système multicœur/HTT avec 32 ou 64 threads), on peut vite se retrouver avec de gros soucis de contention. Et dans ce cas, le facteur 4 n'est plus négligeable.
Enfin, étant donné que les structures de données non-blocantes sont extrêmement susceptibles aux bugs subtils, je me dis qu'il vaut sans doute mieux rester avec des structures à grain fin la plupart du temps ...
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 5.
Un mutex utilise au moins une instruction atomique justement pour garantir l'atomicité de la prise du mutex. Bref, un mutex va forcément coûter au moins aussi cher qu'une opération atomique, vu qu'elles sont à la base du verrouillage ... :-)
Aussi, 0.2 μs / 0.05 μs = 4. Pour les applications qui ne font pas usage trop fréquent de variables partagées/sections critiques ce n'est sans doute pas bien méchant, mais si une structure de donnée est très utilisée/mise à jour par beaucoup d'acteurs (disons, si je suis dans un système multicœur/HTT avec 32 ou 64 threads), on peut vite se retrouver avec de gros soucis de contention. Et dans ce cas, le facteur 4 n'est plus négligeable.
Enfin, étant donné que les structures de données non-blocantes sont extrêmement susceptibles aux bugs subtils, je me dis qu'il vaut sans doute mieux rester avec des structures à grain fin la plupart du temps ...