C'est ridicule, c'est fait en une centaine de cycle cpu maxi. A moins d'avoir plus d'un millions de lock par seconde, ce n'est pas un problème de performance.
C'est tres simple d'avoir plus d'un million de lock par seconde. Et quand certains algos sont optimisé en asm pour diminuer tant que faire ce peu le nombre de cycle, ben si tu en rajoute, tu te dis que tu l'optimise pas.
D'ailleur c'est pas pour rien que les mutex pthread sont en partie écrit en asm : pour avoir le moins d'overhead possible : un mutex est extremement souvent appelé sur un vrai code de calcul.
Mise en attente qui ne coûte rien puisque le thread n'a rien d'autre à faire.
La mise en attente demande un context switch entre autre.
Si tu ne veux pas de "contexte switch", tu peux remplacer les locks fournit par le système avec un truc dans ce goût :
ca s'apelle un spinlock; et tu gagne beaucoup plus a faire un test_and_set fait en asm qu'a te le faire a la mano ;) (d'autant que ton code est pas thread safe, vu que deux personne peuvent rentrer avec ton ++i==1. Il faut que le test_and_set soit atomique pour que ce soit viable, ce que fait l'instruction asm)
Les spinlock sont utilisés dans les mutex ou autre.
Donc les locks (mutex, critical section sous windows) ne coûte pratiquement rien et sont très très utiles.
Mais j'ai jamais dis qu'ils n'étaient pas utiles ;).
[^] # Re: Multicoeur ?
Posté par briaeros007 . En réponse à la dépêche Intel libère TBB. Évalué à 3.
C'est tres simple d'avoir plus d'un million de lock par seconde. Et quand certains algos sont optimisé en asm pour diminuer tant que faire ce peu le nombre de cycle, ben si tu en rajoute, tu te dis que tu l'optimise pas.
D'ailleur c'est pas pour rien que les mutex pthread sont en partie écrit en asm : pour avoir le moins d'overhead possible : un mutex est extremement souvent appelé sur un vrai code de calcul.
Mise en attente qui ne coûte rien puisque le thread n'a rien d'autre à faire.
La mise en attente demande un context switch entre autre.
Si tu ne veux pas de "contexte switch", tu peux remplacer les locks fournit par le système avec un truc dans ce goût :
ca s'apelle un spinlock; et tu gagne beaucoup plus a faire un test_and_set fait en asm qu'a te le faire a la mano ;) (d'autant que ton code est pas thread safe, vu que deux personne peuvent rentrer avec ton ++i==1. Il faut que le test_and_set soit atomique pour que ce soit viable, ce que fait l'instruction asm)
Les spinlock sont utilisés dans les mutex ou autre.
Donc les locks (mutex, critical section sous windows) ne coûte pratiquement rien et sont très très utiles.
Mais j'ai jamais dis qu'ils n'étaient pas utiles ;).