Kacam.net

Systèmes

改的是不同的变量,为什么互相拖慢

8 个线程各改各的计数器,为什么比单线程还慢?

Copiez la consigne, puis choisissez un modèle. Il joue l'examinateur et vous interroge acte par acte au lieu de vous donner la réponse.

Sur un téléphone où l'application est installée, le système l'ouvre directement. Dans WeChat, les liens n'ouvrent pas les applications externes : ouvrez-le d'abord dans un navigateur.

Le texte copié se termine par le corrigé dont le modèle se sert pour vous évaluer. Ne le lisez pas avant : ce qui compte, c'est de l'avoir déduit vous-même.

第一幕是个预测题:8 个线程各自对数组里自己那一格做自增,没有锁、没有共享变量,你猜比单线程快几倍。多数人答「8 倍」,实测可能比单线程还慢。

要害是一句话:竞争的单位是缓存行,不是变量。这一份会让你自己算出那 8 个 long 正好落在同一个 64 字节里。

修法那一幕会追一句很多人没想过的:既然 padding 有用,是不是所有共享数据都该 padding?

★★★★☆ · environ 30 min · Ce qui est évalué : 缓存行是竞争的单位、怎么修、什么时候不值得修

Ce que celle-ci travaille

Caches et lignes de cache Ordres de grandeur

Déjà fait celui-ci ?

Connectez-vous pour noter que vous l'avez fait : la prochaine fois, vous verrez quel jour c'était.

Notes de ceux qui l'ont fait

Personne n'a encore écrit. Une fois terminé, racontez ce qui est sorti de l'échange : quel acte vous a bloqué, quelle conclusion vous avez changée ensuite.

Se connecter pour écrire une note.

Comment s'en servir

Cette série enseigne au lieu d'interroger : elle vous guide au lieu de pousser jusqu'à ce que vous n'ayez plus rien à dire. Quand vous bloquez, elle demande d'abord à quel niveau (jamais entendu / je sais mais pas pourquoi / je sais pourquoi mais je n'y arrive pas), puis décide quoi donner. Elle ne donne la réponse qu'après deux tentatives de guidage — et vous demande ensuite de la redire avec vos mots.

Elle vous réclamera des chiffres sans relâche : répondez « ça coûte un peu » ou « c'est plus rapide » et elle vous coupe. Une conclusion sans ordre de grandeur est une conclusion apprise par cœur — c'est exactement ce que cette série travaille.

Comment démarrer

  1. Choisissez-en une, ouvrez-la, copiez l'invite.
  2. Collez-la dans une conversation toute neuve, ne dites rien, attendez sa première question.
  3. Attendez-vous à devoir chiffrer : combien de nanosecondes, de microsecondes, combien de fois plus lent. Dire que vous ne savez pas suffit, elle le note et continue.

Quatre commandes à lancer à tout moment

  • 跳过 passer tout de suite à la scène suivante
  • 换个说法 réexpliquer ce point sous un autre angle
  • 直说吧 donner la réponse complète, puis me la faire redire
  • 复盘 sauter à la conclusion et sortir la fiche de bilan

Trois pièges

  • Ne lisez pas le corrigé de la fin en premier — sa rubrique « erreurs de raisonnement courantes » contient la réponse à chaque question.
  • Ne vous jetez pas sur le jargon. Dire « c'est un défaut de TLB » est facile ; dire de combien c'est moins cher qu'un défaut de page, c'est ça qui compte.
  • Quand elle se met à vous complimenter, renvoyez-la à la règle « ne me complimente pas ». Guider n'est pas cajoler.

Pour vous faire les ordres de grandeur : les lectures aléatoires puis le premier octet. Pour le débogage en production : malloc, les blocages TCP, les changements de contexte. Pour le code concurrent : réordonnancement et faux partage.