Comment expliqueriez-vous le multi-threading à un enfant de sept ans?


21

Si vous devez expliquer le concept du multi-threading à un enfant de sept ans, comment le feriez-vous? J'ai récemment eu cette question dans une interview. Je suis venu avec une histoire utilisant des emplois (la tâche à faire) et des travailleurs (les fils) mais ce n'était pas entièrement convaincant (étant donné que l'enfant est trop jeune).

Si on vous demandait de décrire cela, comment le feriez-vous?


55
Je demanderais à l'enquêteur s'il envisageait d'embaucher des enfants de 7 ans.
Craige

14
J'aurais poinçonné l'intervieweur en face.
Morons

11
C'est probablement pour tester que vous connaissez assez bien le sujet pour l'enseigner à quelqu'un qui n'a absolument aucune connaissance du sujet.
FrustratedWithFormsDesigner

6
@Morons Tout d'abord, c'est un peu violent. Deuxièmement, vos mots sont-ils en majuscule à cause d'une signification particulière?
Nicole

11
@FrustratedWithFormsDesigner Eh bien, c'est vraiment stupide. Pouvez-vous expliquer des nombres complexes à quelqu'un qui ne sait pas compter? Non? Vous êtes des ordures à des nombres complexes alors.
biziclop

Réponses:


35

Décrivez ce que c'est, laissez de côté les termes techniques à l'exception des définitions:

  1. Vous avez cinq tâches à accomplir. Vous devez commencer à travailler sur chacun d'eux dès maintenant.
  2. Chaque travail est un fil conducteur.
  3. Vous êtes le processeur.
  4. Passez un peu de temps à travailler sur chaque tâche, puis passez à la suivante, en vous assurant de porter attention à chacun d'eux.
  5. Si vous avez plus de personnes, un travail ne peut être travaillé que par une seule personne à la fois.
  6. Étant donné que chaque personne peut travailler sur un travail différent, plus de personnes peuvent effectuer tout le travail plus rapidement, si vous avez plusieurs emplois.

15
Je pense que la seule chose que j'ajouterais est peut-être de changer "d'emplois" en "jeux" ou de jouer avec des jouets ou de faire des corvées ou des devoirs.
bethlakshmi

Ensuite, si vous avez «le processeur» «garde des notes» quand ils travaillent sur un travail, vous pouvez expliquer le cache et la cohérence du cache dans un environnement multiprocesseur
Steven Evers

Bonne description, mais connaissant les enfants de 7 ans, cela ne volera pas.
red-dirt

fixeur @el Je suis un enfant de 7 ans! ou au moins i ac lke 1 hahahahahaha
Mateen Ulhaq

@bethlakshmi, vous supposez qu'à 7 ans, la plupart des enfants jouent encore à des jeux et ne sont pas encore sortis et n'ont pas encore obtenu des emplois productifs? Allons!
Type anonyme

22

Hé gamin. Avez-vous déjà marché et mâché de la gomme en même temps en pensant à Pokemon? C'est votre cerveau multi-threading.


1
Ce sont les périphériques de votre cerveau qui peuvent agir de manière relativement indépendante. C'est (presque) comme si votre cerveau utilisait le DMA.
Nick T

@nick T, plus comme le cloud computing avec seulement aucun accès au code source aux composants. Même la personne qui mâche la gomme n'a aucune idée de la façon dont elle exécute réellement l'action.
Type anonyme

@Ano, votre dernière déclaration semble renforcer mon analogie périphérique. Le périphérique fait des choses sans que le CPU ne plonge dans les minuties, il suffit de le déléguer. Je suppose que vous pourriez également dire que c'est comme le cloud computing, mais c'est à une bien plus grande échelle; Le DMA et les périphériques sont assez bas.
Nick T

vraiment? J'aurais pensé que jouer à pokemon (résolution de problèmes d'ordre supérieur) aurait certainement nécessité une mémoire en mode utilisateur et l'utilisation d'un langage de programmation de niveau supérieur, mais peut-être que quelque chose comme la masticulation pourrait être du DMA.
Type anonyme

10

Reliez-le à quelque chose qu'ils peuvent facilement comprendre. Voitures sur une route.

Pensez à une route à voie unique. Avec 12 voitures dessus, elles roulent les unes après les autres. Et une seule voiture peut finir en même temps, et une voiture plus rapide ne peut pas dépasser les plus lentes.

Mais, avec le multi-threading, c'est comme si toutes ces voitures roulaient sur une route large à quatre voies. Les voitures les plus rapides peuvent dépasser les plus lentes.

Edit: et s'ils ne font pas attention, ils peuvent se planter ...


4
Si le multi-threading est une route, alors c'est celle où quand une voiture roule, l'autre ne bouge pas du tout - ne la suit pas ...
Nicole

@Renesis, bon point, je suppose que je pourrais changer l'exemple en un pont étroit qu'une seule voiture peut traverser à la fois car deux voitures seraient deux lourdes ...
CaffGeek

10

Je l'expliquerais comme faire la lessive.

Vous avez 3 charges de linge et une laveuse et une sécheuse.

La façon dont tout le monde fait la lessive est de déplacer la première charge dans le sèche-linge que de mettre la prochaine charge pour le lavage.

Tout enfant comprendrait qu'attendre que la première charge sèche avant de commencer à laver la deuxième charge prendrait plus de temps.

Vous pourriez même aller plus loin en expliquant si vous avez plus de laveuses et sécheuses (comme dans une laverie), vous pouvez faire les charges plus rapidement.


2
De plus, vous ne pouvez pas sécher le linge tant qu'une charge n'a pas traversé la laveuse, vous pouvez donc également décrire le blocage
zzzzBov

Je vous ai presque donné un +1, mais j'ai réalisé qu'aucun enfant sain d'esprit ne suivrait cette explication. Pour commencer, vous avez utilisé quelque chose d'extrêmement ennuyeux (du point de vue des enfants pas le mien) qui est une corvée. Dès que vous dites le mot lessive, leur esprit s'éteint, ils n'entendraient littéralement que les 7 premiers mots.
Type anonyme

6

Cuisiner un repas avec plusieurs plats sur une petite cuisinière. Vous avez deux brûleurs (c.-à-d. Processeurs ou noyaux) et quatre plats (fils) à cuire. Ainsi, seuls deux plats au maximum peuvent être cuits (exécutés) à la fois. Différents plats ont des temps de cuisson différents. Le cuisinier (l'OS) doit jongler avec tout cela pour que tout soit cuit à temps pour le dîner.


3

Un jongleur de cirque commençant par deux balles et ajoutant progressivement de plus en plus de balles à son jeu.


C'est la meilleure réponse car elle répond à la question du point de vue d'un enfant de 7 ans, pas d'un programmeur de 30 ans.
Type anonyme

2

D'après mon expérience, les enfants de 7 ans n'ont aucun problème avec le concept de différentes choses qui se passent en même temps, comme en témoignent les différentes boîtes à outils de programmation conçues pour les enfants. Notamment les kits Lego, mais aussi le système Scratch.

L'enquêteur essayait peut-être simplement de trouver un nouvel angle pour vous demander quelque chose d'inattendu.


2

"J'ai besoin que vous portiez deux verres de la cuisine à la table . (Ils courent, portant un verre dans chaque main.) Maintenant, veuillez recommencer, mais n'utilisez qu'une seule main."


2

Certaines de ces réponses sont hallucinantes ... Je pense que je suis peut-être la seule ici à connaître les enfants de 7 ans ???

Donc, Johnny ... Le multi-threading est similaire à ce qui se passe quand c'est l'heure du nettoyage à l'école. Toute votre classe doit nettoyer après la fin de la journée ... Chaque enfant est essentiellement un fil ... ramasser des jouets est la tâche, et le coffre à jouets est une ressource partagée.

Dans l'ensemble, je pense que frapper l'intervieweur au visage est une meilleure réponse.


celui qui a marqué ce -1 se moque de lui. développer sérieusement un sens de l'humour. C'est une question ridicule qui devrait être traitée dans cette optique.
Type anonyme

C'est probablement l'une des meilleures réponses à ce jour. Il prend le concept et le met en termes que l'auditeur comprend - même si l'auditeur n'a aucune idée de comment coder une application multithread, il comprendra maintenant l'idée de base.
FrustratedWithFormsDesigner

2

Multi thread, c'est comme avoir beaucoup de choses à faire à la fois, et les faire petit à petit.

Hé le jeune gars curieux, chaque jour tu dois manger, jouer et dormir; droite? Mais pourquoi ne mangez-vous pas une fois ... prenez-en beaucoup jusqu'à ce que vous n'en puissiez plus, puis dormez tout le temps dont vous avez besoin, puis jouez et jouez à des jeux intéressants?

Eh bien, vous ne pouvez pas faire ça, parce que si vous ne mangez pas, vous aurez faim, peu importe combien vous avez obtenu au repas précédent. Si vous ne dormez pas, vous serez fatigué et ne pourrez pas jouer avec vos amis. Compris? Il y a plusieurs choses à faire, mais nous ne pouvons pas les faire en même temps. Nous prenons le petit déjeuner, jouons, prenons le déjeuner, jouons à nouveau, ... et disons enfin "bonne nuit".

C'est aussi la façon dont un ordinateur fonctionne: il joue un peu de la musique, puis passe à l'image que vous dessinez, puis recommence à jouer de la musique. Mais le temps qu'il a fallu pour faire toutes ces choses mille fois n'est qu'un clin d'œil, donc vous ne pouvez pas le voir.


1

Vous avez un ensemble de 6 tâches que vous devez faire:

  • fais tes devoirs
  • nettoie ta chambre
  • faire les courses
  • cueillir les pommes dans le jardin
  • lave la vaisselle
  • balayer le porche

Chaque tâche prend 1 heure. Vous avez 2 frères.

  • Si vous n'utilisez pas le multitâche, cela signifie que vous devez faire tout le travail par vous-même. Cela vous prendra 6 heures (si vous commencez à 12h00, toutes les tâches seront terminées à 18h00).
  • Si vous utilisez le multitâche, cela signifie que vous pouvez confier certaines tâches à vos frères. Si vous commencez tous à travailler en même temps, vous terminerez toutes les tâches plus tôt. Dans ce cas, vous effectuerez tous les deux 2 tâches chacune, ce qui prendra 2 heures (si vous commencez tous à 12h00, toutes les tâches seront terminées à 14h00!).

0

Vous avez un joystick / contrôleur de jeu.

Il y a 4 enfants. Chaque enfant joue à tour de rôle chaque niveau pendant que les autres se reposent. Grâce au travail d'équipe, ils atteignent finalement le niveau 255 *.

Pendant que chaque enfant joue, il mange également dans le sac de jetons que seul le joueur actuel est autorisé à manger.

* Ensuite, le jeu se bloque. ;)


"Pourquoi n'achetez-vous pas 3 contrôleurs de plus?"

Eh bien, ce sont de multiples processeurs!


0

Cours d'art (application multithread)

Puisqu'il ne peut y avoir de classe sans professeur, vous avez besoin d'un professeur (fil conducteur). Lorsque vous arrivez en classe, vous vous asseyez et l'enseignant représente tout le monde et assigne la classe pour peindre des images pour la journée.

L'enseignant assigne tous les élèves de la journée pour commencer la peinture (initialisation et affectation du fil).

Parce que l'école n'a que peu de peintures, tout le monde devra partager ses couleurs (les peintures représentent la mémoire).

Disons que vous peignez un dragon et que vous voulez lui donner des yeux rouges fous, mais quelqu'un d'autre utilise la peinture rouge. Vous ne pouvez pas vous contenter de prendre la peinture par vous-même, car personne d'autre ne pourrait l'utiliser. Au lieu de cela, vous demandez poliment de partager (verrouillage des ressources) la peinture. Vous utilisez un peu, puis passez-le. Vous devrez peut-être attendre un peu pour le récupérer, mais cela permet à tous ceux qui en ont besoin d'en obtenir sans se battre (conditions de course).

À la fin de la classe, l'enseignant rejette la classe (jonction de fil).


Jeux (application multi-processus)

Jouer à un jeu de cartes avec des amis (ou un jeu équivalent avec des objets de collection):

Disons que vous vous réunissez avec vos amis (processus) après l'école. Il n'y a pas d'enseignant dans les parages, personne n'est là pour vous dire quoi faire.

Tout le monde est réuni pour jouer à des jeux (application multi-processus ou multi-couches).

Vous réfléchissez sérieusement à la façon dont vous pouvez utiliser vos cartes pour battre vos adversaires (traitement interne) et vous essayez de partager des idées avec votre partenaire lorsque vous proposez une idée (transmission de messages).

Si vous devenez vraiment bon, vous pouvez rejoindre un club:

Membres dirigeants (programme exécutif) (sous-programmes)

Si le club devient vraiment bon, ils peuvent trouver un moyen spécial (API) de communiquer entre eux pour mieux élaborer des stratégies.


J'ai choisi de ne pas mentionner plusieurs processeurs / cœurs ici parce que l'abstraction devient assez compliquée (et le changement de contexte est toujours transparent pour la plupart des applications). Je pourrais probablement commencer par dire que chaque équipe du jeu représente un processeur / noyau distinct et la plupart des jeux sont toujours nuls car ils ne permettent qu'à quelques équipes de jouer ensemble dans un jeu. L'avenir pourrait ressembler à un MMORPG où de nombreuses personnes peuvent jouer ensemble dans un jeu avec de nombreuses équipes différentes.

Essayer de développer une métaphore des enfants pour un système de traitement distributif sur un ordinateur à plusieurs cœurs ou sur un grand nombre de réseaux hôtes serait assez intéressant à jouer, mais ce n'est pas ce que l'Op a demandé.


Remarque:

Le message qui passe au-dessus est une référence aux nombreuses formes de communication que les programmes utilisent pour se parler. Comme les gens, les applications ont de nombreuses façons de se parler. L'écriture est comme le piping de données sérialisées, parler est comme le réseautage, chuchoter est comme le réseautage via une connexion cryptée, les bases de données sont comme une carte de score (structure finie avec des données bien définies), et utiliser MSMQ est comme taper du code morse en se cognant la tête contre un Surface solide.

La plupart des autres formes de communication au-delà de cela se brouillent trop pour que je puisse les considérer comme indiscernables.

De côté:

Si vous avez déjà joué à un jeu en ligne comme Halo, les personnes qui se joignent à des groupes (ou deviennent des joueurs professionnels) ont généralement un langage abrégé pour passer des appels afin de se diriger mutuellement où se trouvent les joueurs de l'autre équipe et ce qu'ils utilisent. C'est vraiment désagréable si vous ne connaissez pas les appels, mais c'est étonnamment efficace pendant le jeu.

Il est intéressant de voir comment, même si la plupart des gens qui vivent dans une culture donnée parlent une langue commune mais dans cette culture, les gens développent des langues de domaine succinctes plus courtes qui sont optimisées pour gérer des tâches spécifiques. En informatique, je comparerais cela à une API.


-1

Utilisez un modèle largement adopté: les philosophes de la restauration.

5 philosophes mangeant leur dîner de pâtes.

5 fourchettes disponibles autour de la table.

Chaque philosophe a besoin de deux fourchettes pour manger.

Certains mangent. Certains philosophent en attendant.


2
Les philosophes mangent avec deux fourchettes? Mec, ils sont encore plus étranges que je ne le pensais! : P Cette histoire a plus de sens avec des baguettes au lieu de fourchettes ...
FrustratedWithFormsDesigner

4
@Frustré, c'est pourquoi ils doivent tellement réfléchir.

Je ne pense pas que remplacer les baguettes par des fourchettes fonctionne bien. :)
Tyanna

4
J'aime mieux l'analogie avec les baguettes. Vous avez certainement besoin de deux baguettes pour manger. Vous n'avez pas vraiment besoin de deux fourchettes. La chose des fourches confond en fait le problème. D'autant plus que le forking est un terme clé du multitraitement.
Paul Sasik

.. et puis vous êtes coincé expliquant ce qu'est un philosophe. Et pour cause, ils demanderont pourquoi ils ont besoin de deux fourchettes (ce qui est un peu stupide du point de vue de 7 ans) et pourquoi quelqu'un attendrait avant de manger!
Type anonyme

-1

Supposons que vous (l'enfant) rebondissiez une balle sur votre tête. Après chaque rebond, vous le comptez, c'est-à-dire le nombre de rebonds. Aussi après chaque rebond, vous dites les lettres de l'alphabet (A, B, C, ...)

Kid, tu es multithreading.


-1

Les assiettes tournantes en sont un bon exemple. Pensez à ces magiciens qui prennent des assiettes et les font tourner en même temps. Le magicien bascule constamment entre les assiettes pour s'assurer qu'elles tournent toutes.


-2

Un ordinateur ne peut vraiment fonctionner que sur une seule chose à la fois, mais il peut faire les choses très rapidement. (Je laisse de côté le traitement multicœur pour plus de simplicité.) Et si vous voulez écouter de la musique et jouer à un jeu en même temps? L'ordinateur bascule (très rapidement) entre la gestion de la musique et la gestion du jeu.


"Mais pourquoi ne fait-il pas les deux en même temps?"
Mateen Ulhaq

-2

Notre aire de jeux locale a un toboggan triple et un toboggan simple. L'enfilage est comme la triple diapositive, 3 enfants peuvent glisser simultanément. Mais sur la diapositive unique, deux enfants doivent attendre en haut que le premier enfant descende la diapositive.

Une partie de la description de poste relevait-elle du directeur financier?


-3

Deux enfants dans une aire de jeux partagent (se disputent) des ressources limitées, disent les pièces de lego requises dans une petite boîte pour fabriquer leurs robots préférés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.