• [^] # Re: Modification du timer du noyau 2.4

    Posté par . En réponse à la dépêche Modification du timer du noyau 2.4. Évalué à 1.

    > la routine sort 10 fois plus rapidement en timeout ...

    Bizarre ton truc. la fonction read() ne peut retourner sur timeout (du moins pour un fichier sur disque). De plus on ne peut spécifier de timeout avec read().
    La fonction select() ne retourne pas de timeout non plus et le timeout que tu peux exprimer dans select() est en seconde (struct timeval ou équivalent) et pas en cycle du noyau. De plus, la librairie C n'utilise pas les cycles noyaux (sinon le patch proposé fournirai aussi un patch pour la libc :-) ).

    Par contre, si tu fait un truc du style :
    while (1) {
    select(.... *timeout = 0) ;
    }
    ben tu sors dix fois plus souvent de select() sans rien à lire ou écrire avec un 2.5. Et c'est normal (voir l'article :-) ). Mais utiliser un tel algorithme n'est pas très judicieux (le cpu tourne a fond pour rien) !
    Si c'est vraiment nécessaire, le mieu est de faire un fork() avec un processus qui block sur select(... timeout = NULL) et pour communiquer entre processus d'utilise ipcs et/ou les signaux (ou d'utiliser le multi-threading (mais j'y connais) ).