Если вам нужно объяснить многопоточность семилетнему ребенку, как бы вы это сделали? Я недавно получил этот вопрос в интервью. Я придумал историю с использованием заданий (задача, которую нужно выполнить) и работников (темы), но она не была полностью убедительной (учитывая, что ребенок слишком молод).
Если бы вас попросили описать это, как бы вы это сделали?
interview
teaching
multithreading
Винот Кумар
источник
источник
Ответы:
Опишите, что это такое, просто опустите технические термины, за исключением определений:
источник
Эй пацан. Вы когда-нибудь гуляли и жевали жвачку одновременно, думая о покемонах? Это твой мозг многопоточность.
источник
Свяжите это с тем, что они могут легко понять. Авто на дороге.
Думайте о единственной дороге переулка. На нем 12 машин, они ездят одна за другой. И только одна машина может финишировать одновременно, и более быстрая машина не может проехать более медленные.
Но благодаря многопоточности все эти машины едут по широкой дороге с четырьмя полосами движения. Более быстрые машины могут проехать мимо более медленных.
Изменить: и, если они не будут осторожны, они могут врезаться друг в друга ...
источник
Я бы объяснил это как стирку.
У вас есть 3 загрузки белья, одна стиральная машина и одна сушилка.
То, как все стирают белье, - это переместить первую загрузку в сушилку, а затем положить следующую загрузку для стирки.
Любой ребенок поймет, что ожидание высыхания первой загрузки перед началом стирки второй загрузки займет больше времени.
Вы могли бы даже сделать еще один шаг вперед, объяснив, что если у вас больше стиральных и сушильных машин (например, в прачечной самообслуживания), вы сможете выполнять нагрузки быстрее.
источник
Готовим еду с несколькими блюдами на маленькой плите. У вас есть две горелки (то есть процессоры или ядра) и четыре блюда (нити) для приготовления. Таким образом, одновременно можно приготовить не более двух блюд. Разные блюда имеют разное время приготовления. Повар (ОС) должен все это передергивать, чтобы все готовилось ко времени ужина.
источник
Цирковой жонглер, начинающий с двух шаров и постепенно добавляющий все больше и больше шаров в свой акт.
источник
По моему опыту, у 7-летних нет проблем с концепцией разных вещей, происходящих в одно и то же время, о чем свидетельствуют различные инструменты программирования, разработанные для детей. В частности, наборы Lego, но также и система Scratch.
Возможно, интервьюер просто пытался найти новый подход к тому, чтобы спросить вас о чем-то неожиданном.
источник
«Мне нужно, чтобы вы принесли два стакана с кухни на стол . (Они бегут, держа в руках стакан по каждой руке). Теперь, пожалуйста, сделайте это снова, но только одной рукой».
источник
Некоторые из этих ответов сногсшибательны ... Я думаю, что я, возможно, единственный здесь, кто знает 7-летних ???
В целом, я думаю, что ударить интервьюера по лицу - лучший ответ.
источник
Многопоточность, это все равно что делать много вещей одновременно и делать их понемногу.
Эй, молодой любопытный парень, каждый день ты должен есть, играть и спать; правильно? Но почему бы вам не съесть один раз ... взять много, пока вы не можете больше, затем спать все время, что вам нужно, а затем просто играть и играть в интересные игры?
Ну, вы не можете этого сделать, потому что, если вы не будете есть, вы проголодаетесь, независимо от того, сколько вы получили во время предыдущей еды. Если вы не спите, вы устанете и не сможете играть с друзьями. Понял? Есть несколько вещей, которые нужно сделать, но мы не можем сделать их сразу. Мы завтракаем, играем в игры, обедаем, снова играем в игры ... и, наконец, говорим "спокойной ночи".
Так работает компьютер: они немного воспроизводят музыку, затем переключаются на рисунок, который вы рисуете, затем снова переключаетесь на воспроизведение музыки. Но время, которое потребовалось, чтобы сделать все эти вещи в тысячу раз, просто подмигнуло, поэтому вы не можете его увидеть.
источник
У вас есть набор из 6 задач, которые вы должны сделать:
Каждое задание занимает 1 час. У тебя есть 2 брата.
источник
У вас есть один джойстик / игровой контроллер.
Есть 4 детей. Каждый ребенок по очереди играет на каждом уровне, а остальные отдыхают. Используя командную работу, они в конечном итоге достигают уровня 255 *.
Пока каждый ребенок играет, он также ест из пакета фишек, из которого разрешено есть только текущему игроку.
* Тогда игра вылетает. ;)
"Почему бы вам не купить еще 3 контроллера?"
Ну, это несколько процессоров!
источник
Арт класс (Многопоточное приложение)
Поскольку без учителя не может быть занятий, вам нужен учитель (основная тема). Когда вы попадаете в класс, вы садитесь, и учитель отвечает за всех и назначает класс для рисования картинок на весь день.
Учитель назначает всем ученикам на день, чтобы начать рисовать (инициализация потока и назначение).
Поскольку в школе так много красок, всем придется делиться цветами друг с другом (краски представляют память).
Допустим, вы рисуете дракона и хотите дать ему сумасшедшие красные глаза, но кто-то другой использует красную краску. Вы не можете просто пойти и взять краску для себя, потому что тогда никто другой не сможет ее использовать. Вместо этого вы вежливо просите поделиться (блокировка ресурсов) краской. Вы используете немного, а затем передать его. Возможно, вам придется немного подождать, чтобы вернуть его, но это позволяет всем, кто в этом нуждается, получить немного без покрасочного боя (условия гонки).
В конце урока учитель отклоняет урок (присоединение потока).
Gaming (многопроцессное приложение)
Игра в карточную игру с друзьями (или эквивалентную игру с предметами коллекционирования):
Допустим, вы встречаетесь со своими друзьями (процессами) после школы. Вокруг нет учителей, и никто не скажет вам, что делать.
Все собираются вместе, чтобы играть в игры (многопроцессные или многослойные приложения).
Вы серьезно думаете о том, как вы можете использовать свои карты, чтобы побить своих оппонентов (внутренняя обработка), и вы пытаетесь поделиться идеями со своим партнером, когда у вас появляется идея (передача сообщений).
Если вы действительно хороши, вы можете вступить в клуб:
Лидер (исполнительная программа) Члены (подпрограммы)
Если клуб становится действительно хорошим, они могут придумать особый способ (API) общаться друг с другом, чтобы помочь лучше выработать стратегию.
Я решил не упоминать несколько процессоров / ядер здесь, потому что абстракция становится довольно сложной (и переключение контекста все еще прозрачно для большинства приложений). Я мог бы, вероятно, начать с того, что каждая команда в игре представляет отдельный процессор / ядро, и большинство игр все еще отстой, потому что они позволяют нескольким командам играть вместе в игре. Будущее может выглядеть как MMORPG, где многие люди могут играть вместе в игре разных команд.
Попытка разработать детскую метафору для системы распределенной обработки на многих основных компьютерах или во многих хост-сетях была бы довольно интересной игрой, но это не то, о чем просила опера.
Заметка:
Передача сообщений выше является ссылкой на множество форм общения, которые программы используют для общения друг с другом. Как и у людей, у приложений есть много способов общаться друг с другом. Запись похожа на передачу сериализованных данных, общение - на сетевое взаимодействие, шепот - на сетевое соединение по зашифрованному соединению, базы данных - на счетную карточку (конечная структура с четко определенными данными), а использование MSMQ - на нажатие азбуки Морзе, ударяя голову о твердая поверхность.
Большинство других форм общения за пределами этого слишком размыты для меня, чтобы считать их неразличимыми.
В сторону:
Если вы когда-либо играли в онлайн-игры, такие как Halo, у людей, которые присоединяются к группам (или становятся профессиональными игроками), обычно есть сокращенный язык, чтобы давать призывы направлять друг друга, где находятся игроки другой команды и что они используют. Это действительно неприятно, если вы не знаете, каковы вызовы, но это удивительно эффективно во время игры.
Интересно, что, хотя большинство людей, живущих в определенной культуре, говорят на одном языке, но в этой культуре люди разрабатывают более короткие лаконичные доменные языки, которые оптимизированы для решения конкретных задач. В вычислительной технике я бы сравнил это с API.
источник
Используйте широко принятую модель: столовые философы.
5 философов едят их пасту ужин.
5 вилок доступны вокруг стола.
Каждому философу нужны две вилки.
Некоторые едят. Некоторые философствуют в ожидании.
источник
Предположим, вы (ребенок) подпрыгиваете мячом на голове. После каждого отскока вы подсчитываете его, т. Е. Количество отскоков. Также после каждого отскока вы произносите буквы алфавита (A, B, C, ...)
Малыш, ты многопоточен.
источник
Вращающиеся тарелки - хороший пример. Подумайте о тех волшебниках, которые берут тарелки и заставляют их вращаться одновременно. Маг постоянно переключается между пластинами, чтобы все они вращались.
источник
Компьютер может действительно работать только над одной вещью одновременно, но он может делать вещи очень быстро. (Я упускаю многоядерную обработку для простоты.) Но что если вы хотите одновременно слушать музыку и играть в игру? Компьютер (очень быстро) переключается между обработкой музыки и обработкой игры.
источник
Наша местная игровая площадка имеет тройную горку и одну горку. Потоки похожи на тройной слайд, 3 ребенка могут скользить одновременно. Но на одном слайде двое детей должны ждать наверху, пока первый ребенок не спустится вниз.
Была ли часть должностной инструкции отчитываться перед финансовым директором?
источник
Двое детей на детской площадке делятся (борются за) ограниченными ресурсами, скажем, кусочки лего из маленькой коробки, чтобы сделать своих любимых роботов.
источник