bash.im ithappens.me zadolba.li
5473

Верховный Некромант и знамёна поиска

16 февраля 2011, 12:45

Знакомый, учащийся на компьютерной специальности, поделился присланным ему описанием принципа работы программы, написанной в рамках лабораторной по параллельным вычислениям. По-моему, шедеврально получилось.

Захотел лич квадрат магический найти. В принципе, он и сам бы справился, но Верховный Некромант сказал, что процесс надо распараллелить. Тогда лич призвал скелетов. Каждый призванный скелет отправлял личу почтовым голубем присягу о верности и готовности приказам следовать. Призвал лич нескольких скелетов и решил, что этого достаточно будет. Тогда поднял он знамя поиска и разослал всем скелетам почтовых голубей с заданиями. И начал каждый скелет поиск квадрата магического. Скелет ищет-ищет квадрат да на знамя поглядывает — надо ли искать ещё? А как только найдёт — знамя поиска опускает и бежит к своему господину ответ докладывать. Так и ищут квадраты: стоит на поле памятном лич, флаг подле него развевается, да скелеты вокруг толпятся, приказов ждут. Как только флаг поднимется да голуби полетят, так сразу скелеты за поиск и принимаются.

Некоторые вопросы некромантии.

В:: Говорят, что в методических указаниях Верховного Некроманта есть ошибка.
О:: Да. Верховный Некромант считал, что письмо можно отправить почтовым голубем. Но почтовый голубь-скелет летает плохо (попробуй полетай без перьев), поэтому может отнести только короткую записку, не больше трёх слов.

В:: А чем плохо относить письма лично?
О:: В задании Верховного Некроманта написано: распараллелить. Нескольких голубей можно отправить одновременно, а вот лично разносить письма придётся от одного скелета к другому, то есть последовательно.

В:: Как почтовый голубь знает, куда лететь?
О:: Голубю говорят адрес. Свой адрес лич сообщает скелету в заклинании призыва, потом этот адрес скелет передаёт голубю. А адреса скелетов лич узнаёт из их присяг о верности и готовности и тоже говорит их голубям.

В:: А в методических указаниях было написано по-другому.
О:: Ага, в методических указаниях предлагалось, чтобы скелет сам искал лича. Представьте картину: бегает скелет по полю памятному и пристаёт ко всем встречным деревьям, зайцам и другим скелетам с вопросом: «Вы лич или не лич?» — и так, пока лича не найдёт.

В:: Зачем нужен флаг поиска?
О:: Скелет не просто так работает, он зарплату процессорной маной берет. Поэтому, когда он не нужен, его надо остановить, а то и вовсе развеять по ветру. Когда скелет занят, он на почтовых голубей внимания не обращает. Можно, конечно, заставить обращать внимание, но мне больше понравилось обращать внимание скелета на флаг. Быстрее это: бросил взгляд, и всё тут. А с голубем надо выбрать нужного, потом записку с лапки снять, прочитать, да ещё и голубя вернуть.

В:: Что это вообще такое?
О:: Лич — главный процесс,
скелет — вызванные процессы,
Верховный Некромант — преподаватель IT %PrepodName%,
призыв скелетов — команда ShellExecute,
почтовый голубь — команда PostMessage,
лично принасти — команда SendMessage,
записка — произвольное сообщение Windows,
письмо — сообщение Windows WM_COPYDATA,
флаг поиска — событие синхронизации (еvent),
поиск лича — команда FindWindow,
поле памятное — оперативная память,
процессорная мана — процессорное время.