Bonjour,

J'ai fait un petit programme qui lance deux threads, chaque threads boucle un certains nombre de fois et appelle sched_yield à chaque itération.

Le problème c'est que l'appel n'a aucun effet ce sera toujours le thread qui est lancé en dernier qui se terminera avant l'autre. (ce qui est bizarre pour du FIFO...)

J'ai essayé de faire plusieurs changements de politique en initialisant pthread-attr_t mais ça ne change rien.

version Linux 2.6

edit : en revanche si je remplace sched_yield par nanosleep tout fonctionne comme je veux... Peut être s'agit-il d'une optimisation du noyau qui empeche a un thread de se préempter tout seul avant un certain temps, ceci afin d'éviter de trop nombreux changement de contexte ?