• # Pas thread safe

    Posté par . En réponse au journal Performances des processeurs Intel et optimisation. Évalué à -1.

    En fait, si j'ai bien compris ce que tu fais, tu utilises des instructions atomiques (fetch and add, compare and swap, test and set,… Je crois que j'en ai oublié une ou deux encore).
    C'est "normal" que cela aille beaucoup plus vite. Ces instructions nécessitent, comme l'indique le "atomique", qu'un seul coup d'horloge pour être exécutée (et surtout j'imagine que tu fais de l'attente active dans tes algos, alors qu'en général avec des mutex&co on fait de l'attente passive (ce qui n' aucun intérêt lorsque l'on utilise des instructions atomiques)).

    Par contre, quand tu dis que t'as version des lecteurs-redacteurs (avec priorité aux lecteurs) est thread-safe depuis que tu utilises ces instructions, j'en doute un peu. Les algorithmes utilisant des instructions atomiques sont (削除) relativement (削除ここまで) très compliqués (et encore plus à débogguer… Je pense à tout ceux qui on ont fait et qui on ont chié avec des ABA un peu partout ;) ). Je te conseille de lire de la docs à leur sujet (d'ailleurs si ça t'intéresse, je peux demander à un de mes profs de l'année passée si il veut bien me filer son cours en pdf à ce sujet).

    En plus, généralement, ce genre d'algorithmes sont orientés "lock-free structures", c'est une autre façon de penser que lorsque tu codes avec la librairie pthread…

    Je te laisse un peu chercher ;) Une petite piste, regarde du coté des "non blocking algorithm" et des "loch-free structure".

    (My 2 cents… J'espère ne pas avoir dit trop de conneries, mes souvenirs à propos de ce types d'algorithmes sont un peu rouillé ;) )