CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [C] Est-ce que ces threads s'executent en même temps ?

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
12
Page suivantePage suivante
Pseudo supprimé
Niveau 6
29 septembre 2016 à 15:10:18

un bete code qui incrément deux variables, l'une avecADD, l'autre avecLOCK ADD. Vu que le verrou se fait sur toute la ligne de cache, tous les accès sont délayés même s'il n'y pas de data race possible. C'est bon a savoir car par exemple si tu associes une verrou avec un tableau


struct lockablearray
{
   bool lock;
   uint elements[100];
}

a chaque fois qu'une autre tache voudra prendre le verrou, elle bloquera momentanément l’accès au éléments a la tache qui détient le verrou. Si par contre tu mets les éléments sur la ligne de cache suivante avec


struct lockablearray
{
   bool lock;
   char _pad[64 - sizeof(bool)];
   uint elements[100];
}

alors la tache détentrice du verrou ne peut pas être bloquée.

Message édité le 29 septembre 2016 à 15:11:05 par
godrik godrik
MP
Niveau 22
29 septembre 2016 à 15:58:14

et avec deux thread c'est ca? Meme si tu n'avais pas de lock, tu aurais une perte de temps si ils sont aur la meme ligne de cache. Parce ce que tu as du falae sharing.

Message édité le 29 septembre 2016 à 15:58:33 par godrik
Pseudo supprimé
Niveau 6
29 septembre 2016 à 22:07:35

avec un simple false sharing, je perds 1,5% en vitesse d’exécution.

le verrou du cache crée une double bulle dans la chaîne de traitement: le verrouillage puis l'invalidation du cache. c'est un false sharing en pire.

godrik godrik
MP
Niveau 22
29 septembre 2016 à 22:40:45

makes sense.

DébutPage précedente
12
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment