• [^] # Re: Multicoeur ?

    Posté par . En réponse à la dépêche Intel libère TBB. Évalué à 3.

    un mutex, si tu n'es pas mis en attente, execute normalement son code dans le thread appelant. Il n'y a donc pas de raison de context switch.

    Peut etre que certains (mauvaise) implémentation change de thread, mais il n'y a normalement pas de raison.

    Par contre le mutex te bouffe toujours meme si tu as moins de thread que de cpu : c'est une demande de synchro, il y a donc du code, un test_and_set , voir une mise en attente si la ressource est indisponible.
    Si tu as plus de thread que de cpu ... ben tu as pu lancer le mutex donc tu as un cpu, donc on est dans le meme cas qu'au dessus.


    De plus, dans un contexte plus restreint (le calcul haute performance, où les entrées/sorties sont rares), synchroniser comme un malade est souvent synonyme de mauvaises performances.
    Balancer des messages a tire larigo aussi ;).
    Mais la c'est pour des problématique de performance 'normale' (la problématique, pas la performance).
    Si tu as une ressource qui est utilisé pendant 20% du temps d'execution du thread, et que tu lance 200 thread, il faut pas etre devin pour savoir que tu vas pas avoir un speedup de 200 ;).