Jak wytłumaczysz wielowątkowość siedmioletniemu dziecku?

21

Jeśli musisz wyjaśnić siedmioletniemu dziecku koncepcję wielowątkowości, jak byś to zrobił? Niedawno dostałem to pytanie w wywiadzie. Wymyśliłem historię, w której wykorzystałem prace (zadanie do wykonania) i pracowników (wątki), ale nie było to całkowicie przekonujące (biorąc pod uwagę, że dziecko jest zbyt młode).

Gdybyś został poproszony o opisanie tego, jak byś to zrobił?

Vinoth Kumar
źródło
55
Zapytałbym ankietera, czy planuje zatrudnić jakieś 7-letnie dziecko.
Craige
14
Uderzyłbym ankietera w twarz.
Morons,
11
Prawdopodobnie w celu sprawdzenia, czy znasz ten temat wystarczająco dobrze, aby nauczyć go kogoś, kto absolutnie nie ma wiedzy na ten temat.
FrustratedWithFormsDesigner
6
@ Morons Po pierwsze, to trochę brutalne. Po drugie, czy Twoje słowa są pisane wielkimi literami z powodu jakiegoś specjalnego znaczenia?
Nicole,
11
@FrustratedWithFormsDesigner Cóż, to cholernie głupie. Czy potrafisz wyjaśnić liczby zespolone komuś, kto nie umie liczyć? Nie? Jesteś śmieciem przy liczbach zespolonych.
biziclop,

Odpowiedzi:

35

Opisz, co to jest, po prostu pomiń terminy techniczne, z wyjątkiem definicji:

  1. Masz pięć zadań do wykonania. Musisz teraz zacząć pracować nad nimi wszystkimi.
  2. Każde zadanie jest wątkiem.
  3. Jesteś procesorem.
  4. Poświęć trochę czasu na pracę nad każdym zadaniem, a następnie przejdź do następnego, zwracając uwagę na wszystkie z nich.
  5. Jeśli masz więcej osób, praca może być wykonywana tylko przez jedną osobę na raz.
  6. Ponieważ każda osoba może pracować nad inną pracą, więcej osób może wykonać całą pracę szybciej, jeśli masz więcej niż jedną pracę.
Nicole
źródło
15
Myślę, że jedyną rzeczą, którą dodam, może być zmiana „zadań” na „gry” lub zabawa zabawkami, wykonywanie obowiązków domowych lub pracę domową.
bethlakshmi
Następnie, jeśli „procesor” „notuje”, gdy pracują nad zadaniem, możesz wyjaśnić pamięć podręczną i spójność pamięci podręcznej w środowisku wieloprocesorowym
Steven Evers
Dobry opis, ale znając 7-latków, to nie poleci.
czerwony brud
@el utrwalacza I am 7 lat! lub przynajmniej w 1 hahahahahaha
Mateen Ulhaq
@ Bethlakshmi, zakładasz, że w wieku 7 lat dzieci nadal grają w gry i jeszcze nie wyszły i nie dostały produktywnej pracy? daj spokój!
Anonimowy typ
22

Cześć dzieciaku. Czy kiedykolwiek chodziłeś i żułeś gumę jednocześnie myśląc o Pokemonach? To twój wielowątkowy mózg.

Adam Crossland
źródło
1
To jest to, że peryferia twojego mózgu są w stanie działać względnie niezależnie. To jest (prawie) jak twój mózg korzystający z DMA.
Nick T
@nick T, bardziej jak przetwarzanie w chmurze bez dostępu kodu źródłowego do komponentów. Nawet osoba żująca gumę nie ma pojęcia, w jaki sposób faktycznie wykonuje tę akcję.
Anonimowy typ
@ Nie, twoje ostatnie zdanie wydaje się wzmacniać moją analogię peryferyjną. Urządzenie peryferyjne robi rzeczy bez zagłębiania się procesora w najdrobniejsze szczegóły, po prostu delegując je. Wydaje mi się, że można również powiedzieć, że to jak przetwarzanie w chmurze, ale na znacznie większą skalę; DMA i urządzenia peryferyjne są dość niskiego poziomu.
Nick T
naprawdę? Myślałem, że gra w pokemon (rozwiązywanie problemów wyższego rzędu) z pewnością wymagałaby pamięci w trybie użytkownika i użycia języka programowania wyższego poziomu, ale być może coś w rodzaju mastykulacji może być DMA.
Anonimowy typ
10

Odwołaj to do czegoś, co mogą łatwo zrozumieć. Samochody na drodze.

Pomyśl o drodze jednopasmowej. Mając 12 samochodów, jeżdżą jeden po drugim. I tylko jeden samochód może ukończyć w tym samym czasie, a szybszy samochód nie może wyprzedzić wolniejszych.

Ale dzięki wielowątkowości wszystkie samochody jeżdżą szeroką drogą z czterema pasami ruchu. Szybsze samochody mogą minąć te wolniejsze.

Edycja: a jeśli nie będą ostrożni, mogą się ze sobą zderzyć ...

CaffGeek
źródło
4
Jeśli wielowątkowość jest drogą, to tam, gdzie jeden samochód jedzie, drugi wcale się nie porusza - nie podąża za nim ...
Nicole
@Reneesis, dobra uwaga, przypuszczam, że mógłbym zmienić przykład na wąski most, który może przejechać tylko jeden samochód na raz, ponieważ dwa samochody byłyby dwoma ciężkimi ...
CaffGeek
10

Wyjaśniłbym to jak pranie.

Masz 3 wsady prania, jedną pralkę i jedną suszarkę.

Wszyscy robią pranie, wkładając pierwszy ładunek do suszarki, a nie wkładając następny ładunek do prania.

Każde dziecko zrozumie, że oczekiwanie na wyschnięcie pierwszego wsadu przed rozpoczęciem prania drugiego wsadu zajęłoby więcej czasu.

Możesz nawet pójść o krok dalej, wyjaśniając, że jeśli masz więcej pralek i suszarek (np. W pralni samoobsługowej), możesz ładować szybciej.

Tyanna
źródło
2
Ponadto nie można suszyć prania, dopóki pralka nie
przejdzie
Prawie dałem ci +1, ale potem zdałem sobie sprawę, że żadne dziecko przy zdrowych zmysłach nie zastosuje się do tego wyjaśnienia. Na początek użyłeś czegoś niezwykle nudnego (z perspektywy dzieci, a nie mojej), co jest obowiązkiem. Gdy tylko wypowiesz słowo pranie, ich umysł wyłączy się, dosłownie usłyszą tylko pierwsze 7 słów.
Anonimowy typ
6

Gotowanie posiłku z kilkoma potrawami na małym piecu. Masz dwa palniki (tj. Procesory lub rdzenie) i cztery naczynia (wątki) do gotowania. Jednorazowo można ugotować (uruchomić) tylko dwa dania. Różne potrawy mają różne czasy gotowania. Kucharz (OS) musi to wszystko pogodzić, aby wszystko ugotowało się na kolację.

tcrosley
źródło
3

Żongler cyrkowy rozpoczynający się od dwóch piłek i stopniowo dodający coraz więcej piłek do swojego aktu.

Jurij Zubariew
źródło
To najlepsza odpowiedź, ponieważ odpowiada na pytanie z perspektywy 7-letniego dziecka, a nie 30-letniego programisty.
Anonimowy typ
2

Z mojego doświadczenia wynika, że ​​7-latkowie nie mają problemów z koncepcją różnych rzeczy dziejących się w tym samym czasie, o czym świadczą różne zestawy narzędzi programistycznych przeznaczone dla dzieci. W szczególności zestawy Lego, ale także system Scratch.

Być może osoba przeprowadzająca wywiad próbowała po prostu znaleźć nowy punkt widzenia, pytając cię o coś nieoczekiwanego.

użytkownik1249
źródło
2

„Potrzebuję, abyś przyniósł dwie szklanki z kuchni do stołu . (Biegną, trzymając szklankę w każdej ręce.) Teraz zrób to jeszcze raz, ale używaj tylko jednej ręki.”

JK
źródło
2

Niektóre z tych odpowiedzi są oszałamiające ... Myślę, że mogę być jedyną osobą, która zna 7-latków ???

Johnny ... Wielowątkowość jest podobna do tego, co dzieje się, gdy jest czas na sprzątanie w szkole. Cała twoja klasa musi posprzątać po zakończeniu dnia ... Każde dziecko jest w zasadzie wątkiem ... zbieranie zabawek jest zadaniem, a pudełko z zabawkami jest wspólnym zasobem.

Ogólnie myślę, że uderzenie ankietera w twarz to lepsza odpowiedź.

czerwony brud
źródło
ktokolwiek zaznaczył to -1, sam sobie żartuje. poważnie wzbudzają poczucie humoru. To śmieszne pytanie, które należy rozpatrywać w tym świetle.
Anonimowy typ
Jest to prawdopodobnie jedna z najlepszych odpowiedzi, jakie do tej pory słyszano. Przyjmuje tę koncepcję i ujmuje ją w kategoriach zrozumiałych dla słuchacza - nawet jeśli słuchacz nie ma pojęcia, jak zakodować aplikację wielowątkową, zrozumie teraz podstawową ideę.
FrustratedWithFormsDesigner
2

Wielowątkowy, to tak, jakbyś miał wiele rzeczy do zrobienia na raz i robił je stopniowo.

Hej, młody ciekawy facet, każdego dnia musisz jeść, bawić się i spać; dobrze? Ale dlaczego nie zjesz raz ... weź dużo, dopóki nie będziesz mógł wziąć więcej, a potem śpij tyle czasu, ile potrzebujesz, a potem po prostu grać i grać w ciekawe gry?

Cóż, nie możesz tego zrobić, ponieważ jeśli nie jesz, będziesz głodny, bez względu na to, ile dostałeś w poprzednim posiłku. Jeśli nie śpisz, będziesz zmęczony i nie będziesz mógł bawić się z przyjaciółmi. Zrozumiany? Jest kilka rzeczy, które należy zrobić, ale nie możemy tego zrobić od razu. Jemy śniadanie, gramy w gry, jemy lunch, znów gramy w gry ... i wreszcie mówimy „dobranoc”.

Tak działa również komputer: trochę odtwarzają muzykę, następnie przełączają się na rysowany obraz, a następnie przełączają się ponownie, aby odtwarzać muzykę. Ale czas potrzebny na zrobienie tych wszystkich rzeczy tysiąc razy to tylko mrugnięcie okiem, więc nie możesz tego zobaczyć.

Hoàng Long
źródło
1

Masz zestaw 6 zadań do wykonania:

  • odrobić pracę domową
  • Posprzątaj swój pokój
  • zrobić zakupy
  • zbieraj jabłka w ogrodzie
  • zmywać naczynia
  • zamiatać ganek

Każde zadanie zajmuje 1 godzinę. Masz 2 braci.

  • Jeśli nie używasz wielozadaniowości, oznacza to, że musisz wykonać całą pracę sam. Zajmie ci to 6 godzin (jeśli zaczniesz o 12:00, wszystkie zadania zostaną ukończone o 18:00).
  • Jeśli używasz wielozadaniowości, oznacza to, że możesz powierzyć niektóre zadania swoim braciom. Jeśli wszyscy zaczniecie pracować w tym samym czasie, wszystkie zadania ukończycie wcześniej. W takim przypadku wszyscy 3 z was wykonają po 2 zadania, co zajmie 2 godziny (jeśli wszyscy zaczniecie o godzinie 12:00, wszystkie zadania zostaną ukończone o godzinie 14:00!).
użytkownik19248
źródło
0

Masz jeden joystick / kontroler gier.

Jest 4 dzieci. Każde dziecko gra kolejno na każdym poziomie, podczas gdy inne odpoczywają. Dzięki pracy zespołowej ostatecznie osiągają poziom 255 *.

Podczas gdy każde dziecko bawi się, je również z worka frytek, z którego może jeść tylko obecny gracz.

* Następnie gra się zawiesza. ;)


„Dlaczego nie kupisz jeszcze 3 kontrolerów?”

To są różne procesory!

muntoo
źródło
0

Klasa artystyczna (aplikacja wielowątkowa)

Ponieważ nie ma klasy bez nauczyciela, potrzebujesz nauczyciela (główny wątek). Po przejściu do klasy siadasz, a nauczyciel rozlicza się ze wszystkimi i przydziela klasę do malowania obrazów na dany dzień.

Nauczyciel przydziela wszystkich uczniów na dzień, aby rozpocząć malowanie (inicjowanie wątku i przypisanie).

Ponieważ szkoła ma tylko tyle farb, wszyscy będą musieli dzielić się ze sobą kolorami (farby reprezentują pamięć).

Powiedzmy, że malujesz smoka i chcesz nadać mu zwariowane czerwone oczy, ale ktoś inny używa czerwonej farby. Nie możesz po prostu podejść i wziąć farby dla siebie, bo wtedy nikt inny nie byłby w stanie jej użyć. Zamiast tego grzecznie poprosisz o udostępnienie (zablokowanie zasobów) farby. Używasz trochę, a następnie przekazujesz. Być może będziesz musiał trochę poczekać, aby go odzyskać, ale pozwala wszystkim, którzy go potrzebują, zdobyć trochę bez walki o farbę (warunki wyścigu).

Na koniec klasy nauczyciel zwalnia klasę (łączenie wątków).


Gry (aplikacja wieloprocesowa)

Granie w grę karcianą z przyjaciółmi (lub równoważna gra z przedmiotami kolekcjonerskimi):

Powiedzmy, że spotykasz się ze znajomymi (procesami) po szkole. W pobliżu nie ma nauczycieli, nikt nie powiedziałby ci, co masz robić.

Wszyscy spotykają się, aby grać w gry (aplikacja wieloprocesowa lub wielowarstwowa).

Zastanawiasz się, jak wykorzystać swoje karty do pokonania przeciwników (przetwarzanie wewnętrzne) i próbujesz dzielić się pomysłami ze swoim partnerem, gdy wpadniesz na pomysł (przekazanie wiadomości).

Jeśli poczujesz się naprawdę dobrze, możesz dołączyć do klubu:

Lider (program wykonawczy) Członkowie (podprogramy)

Jeśli klub stanie się naprawdę dobry, może wymyślić specjalny sposób (API) do komunikowania się ze sobą w celu lepszej strategii.


Zdecydowałem się nie wspominać o wielu procesorach / rdzeniach, ponieważ abstrakcja staje się dość skomplikowana (a przełączanie kontekstu jest nadal przezroczyste dla większości aplikacji). Mógłbym zacząć od stwierdzenia, że ​​każda drużyna w grze reprezentuje osobny procesor / rdzeń, a większość gier wciąż jest do bani, ponieważ pozwalają na grę tylko kilku drużynom. Przyszłość może wyglądać bardziej jak MMORPG, w którym wiele osób może grać razem w grze w wielu różnych zespołach.

Próba opracowania dziecięcej metafory dla systemu przetwarzania rozproszonego na wielu komputerach lub wielu sieciach hostów byłaby całkiem interesująca do zabawy, ale nie o to prosiła operacja.


Uwaga:

Przekazywanie wiadomości powyżej odnosi się do wielu form komunikacji używanych przez programy do komunikowania się ze sobą. Podobnie jak ludzie, aplikacje mają wiele sposobów komunikowania się ze sobą. Pisanie jest jak przesyłanie serializowanych danych, mówienie jest jak praca w sieci, szeptanie jest jak praca w sieci za pomocą szyfrowanego połączenia, bazy danych są jak karta wyników (skończona struktura z dobrze zdefiniowanymi danymi), a używanie MSMQ jest jak stukanie w kod Morse'a poprzez walenie głową w twarda powierzchnia.

Większość innych form komunikacji poza tym rozmazuje się zbyt mocno, abym uważał je za nierozróżnialne.

Na bok:

Jeśli kiedykolwiek grałeś w grę online, taką jak Halo, ludzie, którzy dołączają do grup (lub stają się zawodowymi graczami), zwykle mają skrócony język, aby wydawać połączenia, aby kierować się nawzajem tam, gdzie są gracze drugiej drużyny i czego używają. To naprawdę okropne, jeśli nie znasz połączeń, ale jest zaskakująco skuteczne podczas gry.

Ciekawe, jak pomimo tego, że większość ludzi żyjących w danej kulturze mówi wspólnym językiem, ale w tej kulturze ludzie rozwijają krótsze, zwięzłe języki domenowe, zoptymalizowane do obsługi określonych zadań. W informatyce porównałbym to do API.

Evan Plaice
źródło
-1

Użyj powszechnie przyjętego modelu: filozofów kulinarnych.

5 filozofów jedzących obiad z makaronem.

5 widelców dostępnych wokół stołu.

Każdy filozof potrzebuje dwóch widelców do jedzenia.

Niektórzy jedzą. Niektórzy filozofują podczas oczekiwania.

S.Lott
źródło
2
Filozofowie jedzą dwoma widelcami? Człowieku, są jeszcze dziwniejsze niż myślałem! : P Ta historia ma sens z pałeczkami zamiast widelcami ...
FrustratedWithFormsDesigner
4
@ Sfrustrowani, dlatego muszą tyle myśleć.
Nie wydaje mi się, żeby zastąpienie pałeczek widelcami działało dobrze. :)
Tyanna,
4
Bardziej lubię analogię pałeczek. Na pewno potrzebujesz dwóch pałeczek do jedzenia. Tak naprawdę nie potrzebujesz dwóch widelców. Sprawa rozwidlenia dezorientuje problem. Zwłaszcza, że ​​rozwidlanie jest kluczowym terminem w wieloprocesowym przetwarzaniu.
Paul Sasik,
.. a potem utknąłeś w wyjaśnianiu, czym jest filozof. I z tego powodu zapytają, dlaczego potrzebują dwóch widelców (co jest trochę głupie z perspektywy 7yo) i dlaczego z tego powodu ktokolwiek czekałby przed jedzeniem!
Anonimowy typ
-1

Załóżmy, że podskakujesz piłkę na głowie. Po każdym odbiciu liczysz to, tj. Liczbę odrzuceń. Również po każdym odbiciu wymawiasz litery z alfabetu (A, B, C, ...)

Dzieciaku, jesteś wielowątkowy.

Donotalo
źródło
-1

Dobrym przykładem są wirujące talerze. Pomyśl o tych magikach, którzy biorą talerze i obracają je jednocześnie. Mag nieustannie przełącza się między płytami, aby upewnić się, że wszystkie się obracają.

Ian
źródło
-2

Komputer naprawdę może działać tylko na jedną rzecz na raz, ale może działać bardzo szybko. (Dla uproszczenia pomijam przetwarzanie wielordzeniowe). Ale co, jeśli chcesz słuchać muzyki i jednocześnie grać w grę? Komputer (bardzo szybko) przełącza się między obsługą muzyki a obsługą gry.

Maks
źródło
„Ale dlaczego nie robi to jednocześnie?”
Mateen Ulhaq,
-2

Nasz lokalny plac zabaw ma potrójną zjeżdżalnię i jedną zjeżdżalnię. Nawlekanie jest jak potrójna zjeżdżalnia, 3 dzieci mogą zjechać jednocześnie. Ale na jednym slajdzie dwoje dzieci musi czekać na górze, aby pierwsze dziecko zjechało po zjeździe.

Czy część opisu stanowiska podlegała CFO?

jqa
źródło
-3

Dwoje dzieci na placu zabaw dzieli (walczy) ograniczone zasoby, powiedz wymagane klocki Lego z małego pudełka, aby stworzyć swoje ulubione roboty.

hotpaw2
źródło