Deja je crois que tu n'a pas compris que c'est dans la fonction malloc qu'il y a un mutex.
Mais ca fait un call à un mutex. après on peut se débrouiller en interne.
Par exemple, je sais que mon prog en charge pleine bouffe 200Mo. Donc je fais dans mon thread un malloc de 200Mo d'entrée de jeu (et même le plus souvent un calloc par choix perso) et après je gère ma mémoire en interne sans refaire le moindre malloc ni le moindre appel a des signaux systèmes. J'ai fait un malloc et je distribue ensuite au threads qui ont en besoins ce qu'ils me demandent quand ils le demandent. Niveau vitesse je gagne en perf un maximum.
Toute sous-allocation doit se faire sans syscall. En utilisant exactement le meme code de sous-allocation dans un process ou dans une thread, on a exactement la meme performance.
Gni ? Quand je sous alloue d'un process vers un de ses threads je fais exactement 0 appels systèmes. Quand je lock un segment via un thread encore 0 appels. Quand je remonte un signal interne pour la libération d'une ressource toujours 0.
Niveau perf j'ai un facteur temps qui varie de 3 à 15 suivant la charge (à nice de 0).
[^] # Re: le meilleur compromis performances vs sécurité
Posté par Jerome Herman . En réponse à la dépêche PTT : un outil de trace pour la NPTL. Évalué à 2.
Mais ca fait un call à un mutex. après on peut se débrouiller en interne.
Par exemple, je sais que mon prog en charge pleine bouffe 200Mo. Donc je fais dans mon thread un malloc de 200Mo d'entrée de jeu (et même le plus souvent un calloc par choix perso) et après je gère ma mémoire en interne sans refaire le moindre malloc ni le moindre appel a des signaux systèmes. J'ai fait un malloc et je distribue ensuite au threads qui ont en besoins ce qu'ils me demandent quand ils le demandent. Niveau vitesse je gagne en perf un maximum.
Toute sous-allocation doit se faire sans syscall. En utilisant exactement le meme code de sous-allocation dans un process ou dans une thread, on a exactement la meme performance.
Gni ? Quand je sous alloue d'un process vers un de ses threads je fais exactement 0 appels systèmes. Quand je lock un segment via un thread encore 0 appels. Quand je remonte un signal interne pour la libération d'une ressource toujours 0.
Niveau perf j'ai un facteur temps qui varie de 3 à 15 suivant la charge (à nice de 0).