Wie würden Sie einem siebenjährigen Kind Multi-Threading erklären?


21

Wenn Sie einem siebenjährigen Kind das Konzept des Multithreading erklären müssen, wie würden Sie es tun? Ich habe diese Frage kürzlich in einem Interview bekommen. Ich habe mir eine Geschichte über Jobs (die zu erledigende Aufgabe) und Arbeiter (die Fäden) ausgedacht, aber sie war nicht ganz überzeugend (wenn man bedenkt, dass das Kind zu jung ist).

Wenn Sie gebeten würden, dies zu beschreiben, wie würden Sie es tun?


55
Ich würde den Interviewer fragen, ob er / sie vorhabe, 7-jährige Kinder einzustellen.
Craige

14
Ich hätte den Interviewer ins Gesicht gestanzt.
Morons

11
Es ist wahrscheinlich ein Test, dass Sie das Thema gut genug kennen, um es jemandem beizubringen, der überhaupt keine Kenntnisse über das Thema hat.
FrustratedWithFormsDesigner

6
@ Morons Zunächst einmal ist das ein bisschen gewalttätig. Zweitens: Werden Ihre Wörter aufgrund einer besonderen Bedeutung großgeschrieben?
Nicole

11
@FrustratedWithFormsDesigner Nun, es ist verdammt dumm. Können Sie jemandem komplexe Zahlen erklären, der nicht weiß, wie man zählt? Nein? Dann bist du Quatsch bei komplexen Zahlen.
biziclop

Antworten:


35

Beschreiben Sie, was es ist. Lassen Sie die technischen Begriffe mit Ausnahme der Definitionen einfach weg:

  1. Sie haben fünf Jobs zu erledigen. Sie müssen sofort an allen arbeiten.
  2. Jeder Job ist ein Thread.
  3. Sie sind der Verarbeiter.
  4. Nehmen Sie sich ein bisschen Zeit für jeden Job und wechseln Sie dann zum nächsten. Achten Sie dabei darauf, dass Sie allen Ihre Aufmerksamkeit schenken.
  5. Wenn Sie mehr Leute haben, kann ein Job immer nur von einer Person bearbeitet werden.
  6. Da jede Person an einem anderen Job arbeiten kann, können mehr Personen die gesamte Arbeit schneller erledigen, wenn Sie mehr als einen Job haben.

15
Ich denke, das einzige, was ich hinzufügen würde, ist, vielleicht "Jobs" in "Spiele" zu ändern oder mit Spielzeug zu spielen oder Hausaufgaben zu machen.
Bethlakshmi

Wenn Sie den Prozessor veranlassen, Notizen zu machen, während er an einem Job arbeitet, können Sie den Cache und die Cache-Kohärenz in einer Umgebung mit mehreren Prozessoren erläutern
Steven Evers

Gute Beschreibung, aber wenn man 7-jährige kennt, fliegt das nicht.
Red-Dirt

Ich bin ein 7-jähriger! oder atlest i ac lke 1 hahahahahaha
Mateen Ulhaq

@bethlakshmi, Sie gehen davon aus, dass höchstens 7 Kinder noch Spiele spielen und noch keine produktiven Jobs haben? Komm schon!
Anonym Typ

22

Hey Kleiner. Waren Sie schon einmal zu Fuß und haben Kaugummi gleichzeitig gekaut, während Sie an Pokemon gedacht haben? Das ist dein Gehirn Multithreading.


1
Das ist die Peripherie Ihres Gehirns, die relativ unabhängig agieren kann. Es ist (fast) so, als würde Ihr Gehirn DMA verwenden.
Nick T

@nick T, eher wie Cloud Computing ohne Quellcode-Zugriff auf die Komponenten. Sogar die Person, die den Kaugummi kaut, hat keine Ahnung, wie sie die Aktion tatsächlich ausführt.
Anonym Typ

@Ano, deine letzte Aussage scheint meine periphere Analogie zu verstärken. Das Peripheriegerät erledigt Dinge, ohne dass die CPU in die Details eintaucht, sondern sie einfach delegiert. Man könnte auch sagen, es ist wie Cloud Computing, aber das ist viel größer. DMA und Peripheriegeräte sind relativ niedrig.
Nick T

Ja wirklich? Ich hätte gedacht, dass das Spielen von pokemon (Problemlösung höherer Ordnung) definitiv Benutzermodus-Speicher und die Verwendung einer höheren Programmiersprache erfordert hätte, aber vielleicht könnte so etwas wie Mastizieren DMA sein.
Anonym Typ

10

Beziehen Sie es auf etwas, das sie leicht verstehen können. Autos auf einer Straße.

Denken Sie an eine einspurige Straße. Mit 12 Autos fahren sie nacheinander. Und nur ein Auto kann gleichzeitig fahren, und ein schnelleres Auto kann die langsameren nicht überholen.

Aber mit Multithreading fahren all diese Autos auf einer breiten Straße mit vier Fahrspuren. Die schnelleren Autos können an den langsameren vorbeifahren.

Bearbeiten: und wenn sie nicht aufpassen, können sie ineinander stoßen ...


4
Wenn Multithreading eine Straße ist, dann ist es eine, bei der sich ein Auto nicht bewegt, während sich das andere Auto bewegt - und nicht dahinter folgt ...
Nicole,

@Renesis, guter Punkt, ich nehme an, ich könnte das Beispiel in eine schmale Brücke ändern, die jeweils nur ein Auto überqueren kann, weil zwei Autos zwei schwere wären ...
CaffGeek

10

Ich würde es so erklären, als würde ich Wäsche waschen.

Sie haben 3 Ladungen Wäsche und eine Waschmaschine und einen Trockner.

Die Art und Weise, wie jeder Wäsche wäscht, besteht darin, die erste Ladung in den Trockner zu befördern, bevor die nächste Ladung zum Waschen gebracht wird.

Jedes Kind würde verstehen, dass das Warten auf das Trocknen der ersten Ladung vor dem Waschen der zweiten Ladung mehr Zeit in Anspruch nehmen würde.

Sie können sogar noch einen Schritt weiter gehen, indem Sie erklären, dass Sie, wenn Sie mehr Waschmaschinen und Trockner haben (wie in einem Waschsalon), die Ladevorgänge schneller erledigen können.


2
Außerdem können Sie die Wäsche erst trocknen, wenn eine Ladung die Waschmaschine durchlaufen hat. Sie können also auch das Blockieren beschreiben
zzzzBov

Ich hätte dir fast +1 gegeben, aber dann wurde mir klar, dass kein Kind, das bei Verstand ist, dieser Erklärung folgen würde. Für den Anfang hast du etwas extrem Langweiliges benutzt (aus der Sicht der Kinder, nicht meiner), das eine lästige Pflicht ist. Sobald Sie das Wort "Wäsche" sagen, schaltet sich der Geist ab, und sie hören buchstäblich nur die ersten 7 Wörter.
Anonym Typ

6

Kochen einer Mahlzeit mit mehreren Gerichten auf einem kleinen Herd. Sie haben zwei Brenner (dh Prozessoren oder Kerne) und vier Teller (Gewinde) zum Kochen. Es können also immer nur maximal zwei Gerichte gleichzeitig gekocht werden. Unterschiedliche Gerichte haben unterschiedliche Garzeiten. Der Koch (das Betriebssystem) muss das alles unter einen Hut bringen, damit alles rechtzeitig zum Abendessen gekocht wird.


3

Ein Zirkusjongleur, der mit zwei Bällen beginnt und nach und nach immer mehr Bälle zu seinem Spiel hinzufügt.


Dies ist die beste Antwort, da sie die Frage aus der Perspektive eines 7-jährigen Kindes und nicht eines 30-jährigen Programmierers beantwortet.
Anonym Typ

2

Meiner Erfahrung nach haben 7-Jährige keine Probleme mit dem Konzept, dass verschiedene Dinge zur gleichen Zeit ablaufen, was die verschiedenen Programmier-Toolkits für Kinder bezeugen. Vor allem die Lego-Kits, aber auch das Scratch-System.

Vielleicht hat der Interviewer einfach versucht, einen neuen Blickwinkel auf die Frage nach etwas Unerwartetem zu finden.


2

"Du musst zwei Gläser aus der Küche zum Tisch tragen . (Sie rennen mit einem Glas in jeder Hand.) Jetzt mach es bitte noch einmal, aber benutze nur eine Hand."


2

Einige dieser Antworten sind umwerfend ... Ich glaube, ich bin der einzige hier, der 7-Jährige kennt ???

Also, Johnny ... Multithreading funktioniert ähnlich wie beim Aufräumen in der Schule. Deine ganze Klasse muss nach dem Ende des Tages aufräumen ... Jedes Kind ist im Grunde ein Faden ... das Aufheben von Spielzeug ist die Aufgabe, und die Spielzeugkiste ist eine gemeinsame Ressource.

Insgesamt halte ich es für besser, dem Interviewer ins Gesicht zu schlagen.


wer diese -1 markiert hat, macht sich lustig. ernsthaft einen Sinn für Humor entwickeln. Es ist eine lächerliche Frage, die in diesem Licht behandelt werden sollte.
Anonym Typ

Dies ist wahrscheinlich eine der besten Antworten, die bisher zu hören waren. Es nimmt das Konzept und bringt es in Worte, die der Hörer versteht - auch wenn der Hörer keine Ahnung hat, wie er eine Multithread-App codieren soll , versteht er jetzt die Grundidee.
FrustratedWithFormsDesigner

2

Multi-Thread, es ist, als hätte man viele Dinge gleichzeitig zu tun und tut sie nach und nach.

Hey, der junge, neugierige Kerl, du musst jeden Tag essen, spielen und schlafen. Recht? Aber warum isst du nicht einmal ... nimm viel, bis du nicht mehr kannst, dann schlafe die ganze Zeit, die du brauchst, und spiele dann einfach interessante Spiele?

Nun, das kannst du nicht, denn wenn du nicht isst, wirst du hungrig, egal wie viel du in der vorherigen Mahlzeit bekommen hast. Wenn Sie nicht schlafen, werden Sie müde und können nicht mit Ihren Freunden spielen. Verstanden? Es gibt einige Dinge, die erledigt werden müssen, aber wir können sie nicht gleichzeitig erledigen. Wir frühstücken, spielen, essen zu Mittag, spielen wieder, ... und sagen endlich "Gute Nacht".

So funktioniert auch ein Computer: Sie spielen die Musik ein wenig ab, wechseln dann zu dem Bild, das Sie zeichnen, und schalten dann wieder auf Musik um. Aber die Zeit, die es dauerte, all diese Dinge tausendmal zu erledigen, ist nur ein Augenzwinkern, sodass Sie es nicht sehen können.


1

Sie haben eine Reihe von 6 Aufgaben, die Sie erledigen müssen:

  • mach deine Hausaufgaben
  • räum dein Zimmer auf
  • Den Einkauf erledigen
  • pflücke die Äpfel im Garten
  • wasche das Geschirr
  • Fegen Sie die Veranda

Jede Aufgabe dauert 1 Stunde. Du hast 2 Brüder.

  • Wenn Sie kein Multitasking verwenden, müssen Sie die gesamte Arbeit selbst erledigen. Sie benötigen 6 Stunden (wenn Sie um 12:00 Uhr beginnen, werden alle Aufgaben um 18:00 Uhr erledigt).
  • Wenn Sie Multitasking verwenden, können Sie Ihren Brüdern einige Aufgaben übertragen. Wenn Sie alle zur gleichen Zeit anfangen zu arbeiten, werden Sie alle Aufgaben schneller erledigen. In diesem Fall erledigen Sie zu dritt jeweils 2 Aufgaben, was 2 Stunden dauert (wenn Sie alle um 12:00 Uhr beginnen, werden alle Aufgaben um 14:00 Uhr erledigt!).

0

Sie haben einen Joystick / Gamecontroller.

Es gibt 4 Kinder. Jedes Kind spielt abwechselnd jedes Level, während sich die anderen ausruhen. Durch Teamwork erreichen sie schließlich Level 255 *.

Während jedes Kind spielt, isst es auch aus der Tüte mit Chips, von denen nur der aktuelle Spieler essen darf.

* Dann stürzt das Spiel ab. ;)


"Warum kaufst du nicht noch 3 Controller?"

Nun, das sind mehrere Prozessoren!


0

Kunstunterricht (Multi-Threaded-Anwendung)

Da es keine Klasse ohne Lehrer geben kann, brauchen Sie einen Lehrer (Hauptthema). Wenn Sie in die Klasse kommen, setzen Sie sich, und der Lehrer ist für alle verantwortlich und weist die Klasse an, Bilder für den Tag zu malen.

Der Lehrer weist allen Schülern den Tag zu, an dem mit dem Malen begonnen werden soll (Fadeninitialisierung und -zuweisung).

Da die Schule nur so viele Farben hat, müssen alle Farben miteinander teilen (Farben repräsentieren die Erinnerung).

Nehmen wir an, Sie malen einen Drachen und möchten ihm verrückte rote Augen geben, aber jemand anderes verwendet die rote Farbe. Sie können nicht einfach hinübergehen und die Farbe für sich selbst nehmen, da sonst niemand in der Lage wäre, sie zu verwenden. Stattdessen bitten Sie höflich darum, die Farbe zu teilen (Ressourcen sperren). Sie verbrauchen ein wenig und geben es dann weiter. Es kann sein, dass Sie etwas warten müssen, bis Sie es zurückbekommen, aber jeder, der es braucht, kann es bekommen, ohne sich zu streiten (Rennbedingungen).

Am Ende des Unterrichts schließt der Lehrer den Unterricht ab (Thread-Joining).


Gaming (Multi-Prozess-Anwendung)

Mit Freunden ein Kartenspiel spielen (oder ein gleichwertiges Spiel mit Sammlerstücken):

Nehmen wir an, Sie treffen sich nach der Schule mit Ihren Freunden (Prozessen). Es sind keine Lehrer da, und niemand ist da, um Ihnen zu sagen, was Sie tun sollen.

Jeder kommt zusammen, um Spiele zu spielen (Multi-Prozess- oder Multi-Layer-Anwendung).

Sie überlegen genau, wie Sie Ihre Karten einsetzen können, um Ihre Gegner zu besiegen (interne Verarbeitung), und Sie versuchen, Ideen mit Ihrem Partner zu teilen, wenn Sie eine Idee haben (Weitergabe von Nachrichten).

Wenn du wirklich gut wirst, kannst du einem Club beitreten:

Leader (Executive-Programm) Mitglieder (Unterprogramme)

Wenn der Club wirklich gut wird, haben sie möglicherweise eine spezielle Methode (API), um miteinander zu kommunizieren und eine bessere Strategie zu entwickeln.


Ich habe hier auf mehrere Prozessoren / Kerne verzichtet, da die Abstraktion ziemlich kompliziert wird (und die Kontextumschaltung für die meisten Anwendungen immer noch transparent ist). Ich könnte wahrscheinlich damit beginnen, dass jedes Team im Spiel einen separaten Prozessor / Kern darstellt und die meisten Spiele immer noch schlecht sind, weil sie nur einigen Teams erlauben, zusammen in einem Spiel zu spielen. Die Zukunft könnte eher wie ein MMORPG aussehen, in dem viele Leute in einem Spiel in vielen verschiedenen Teams zusammenspielen können.

Der Versuch, eine Kindermetapher für ein Distributionsverarbeitungssystem auf vielen Kerncomputern oder auf vielen Hostnetzwerken zu entwickeln, wäre ziemlich interessant, aber das ist nicht das, wonach die Op gefragt hat.


Hinweis:

Die oben angegebene Meldung bezieht sich auf die vielen Kommunikationsformen, mit denen Programme miteinander kommunizieren. Anwendungen haben wie Menschen viele Möglichkeiten, miteinander zu kommunizieren. Schreiben ist wie das Weiterleiten von serialisierten Daten, Sprechen ist wie das Vernetzen, Flüstern ist wie das Vernetzen über eine verschlüsselte Verbindung, Datenbanken sind wie eine Scorecard (endliche Struktur mit genau definierten Daten), und MSMQ zu verwenden ist wie das Tippen auf Morsecode, indem Sie Ihren Kopf gegen a schlagen feste Oberfläche.

Die meisten anderen Kommunikationsformen verschwimmen zu sehr, als dass ich sie für nicht unterscheidbar halten könnte.

Beiseite:

Wenn Sie schon einmal ein Online-Spiel wie Halo gespielt haben, haben die Personen, die Gruppen beitreten (oder Profispieler werden), normalerweise eine verkürzte Sprache, um sich gegenseitig zu informieren, wo sich die Spieler des anderen Teams befinden und was sie verwenden. Es ist wirklich unangenehm, wenn Sie die Callouts nicht kennen, aber es ist überraschend effektiv während des Spiels.

Es ist interessant, wie die meisten Menschen, die in einer bestimmten Kultur leben, eine gemeinsame Sprache sprechen, innerhalb dieser Kultur jedoch kürzere, prägnante Domänensprachen entwickeln, die für bestimmte Aufgaben optimiert sind. Beim Rechnen würde ich das mit einer API vergleichen.


-1

Verwenden Sie ein weit verbreitetes Modell: die Essensphilosophen.

5 Philosophen beim Pastadinner.

5 Gabeln rund um den Tisch.

Jeder Philosoph braucht zwei Gabeln zum Essen.

Manche essen. Einige philosophieren während des Wartens.


2
Philosophen essen mit zwei Gabeln? Mann, sie sind noch seltsamer als ich dachte! : P Diese Geschichte macht mehr Sinn mit Stäbchen statt Gabeln ...
FrustratedWithFormsDesigner

4
@Frustriert, deshalb müssen sie so viel nachdenken.

Ich denke nicht, dass das Ersetzen von Essstäbchen durch Gabeln zu gut funktioniert. :)
Tyanna

4
Ich mag die Stäbchen-Analogie besser. Du brauchst definitiv zwei Stäbchen zum Essen. Sie brauchen nicht wirklich zwei Gabeln. Die Sache mit den Gabeln verwirrt das Problem tatsächlich. Zumal das Gabeln ein Schlüsselbegriff in der Mehrfachverarbeitung ist.
Paul Sasik

.. und dann erklärst du nicht weiter, was ein Philosoph ist. Und natürlich werden sie fragen, warum sie zwei Gabeln brauchen (was aus der Sicht eines 7-Jährigen ein bisschen dumm ist) und warum jemand warten würde, bevor er etwas isst!
Anonym Typ

-1

Angenommen, Sie sind (das Kind) einen Ball aufspringen auf dem Kopf. Nach jedem bounce, sind zählen Sie es, das heißt, die Anzahl der Bounces. Auch nach jedem Prell Sie sagen, die Buchstaben aus Alphabet (A, B, C, ...)

Kid, du bist Multithreading.


-1

Das Schleudern von Platten ist ein gutes Beispiel. Denken Sie an diesen Zauberer Menschen, die ein paar Teller nehmen und bekommen sie alle zur gleichen Zeit drehen. Der Magier wechselt ständig zwischen den Platten sie Spinnen alle Aufenthalt zu gewährleisten.


-2

Ein Computer kann wirklich nur an einer Sache gleichzeitig arbeiten, aber er kann Dinge sehr schnell erledigen. (Ich verzichte der Einfachheit halber auf die Verarbeitung mit mehreren Kernen.) Aber was ist, wenn Sie gleichzeitig Musik hören und ein Spiel spielen möchten? Der Computer wechselt (sehr schnell) zwischen dem Umgang mit der Musik und dem Umgang mit dem Spiel.


"Aber warum macht es nicht beides gleichzeitig?"
Mateen Ulhaq

-2

Unser lokaler Spielplatz verfügt über eine Dreifachrutsche und eine Einzelrutsche. Das Einfädeln ist wie beim Dreifachrutschen, 3 Kinder können gleichzeitig nach unten rutschen. Aber auf der Einzelrutsche müssen zwei Kinder oben auf das erste Kind warten, das die Rutsche herunterfährt.

War ein Teil der Stellenbeschreibung ein Bericht an den CFO?


-3

Zwei Kinder auf einem Spielplatz, die sich begrenzte Ressourcen teilen (streiten), sagen die benötigten Legostücke aus einer kleinen Schachtel, um ihre Lieblingsroboter herzustellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.