Bonjour,
Il existe une fonction faisant à priori la même chose que les sémaphore, cette fonction est sched_yield, elle prend nettement moins de temps que les sémaphores, mais je ne comprends pas pourquoi?
Est-ce que c'est dû au fait que sched_yield est un appel système donc moins couteux que sémaphores posix (appel bibliothéque) ou bien au fait que sched_yield ne soit pas bloquante contrairement aux instructions liées aux sémaphores?
Lorsqu'un processus est bloqué par un sémaphore, il est retiré de la liste de processus prêts et est placé dans la file des processus bloqués. Il n'aura donc plus le processeur jusqu'à ce que le sémaphore soit libéré.
De ce que je sais, sched_yield ne fait juste qu'enlever le processeur au processus courant sans le bloquer (le processus est replacé à la fin de la file de processus prêt associée à sa priorité). Une sorte de préemption manuelle en somme. Est-ce la raison de cette différence de temps ?