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

15:45 16.02.2011, IT happens


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


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


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


В:: Говорят, что в методических указаниях Верховного Некроманта есть ошибка.

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


В:: А чем плохо относить письма лично?

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


В:: Как почтовый голубь знает, куда лететь?

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


В:: А в методических указаниях было написано по-другому.

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


В:: Зачем нужен флаг поиска?

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


В:: Что это вообще такое?

О:: Лич — главный процесс,

скелет — вызванные процессы,

Верховный Некромант — преподаватель IT %PrepodName%,

призыв скелетов — команда ShellExecute,

почтовый голубь — команда PostMessage,

лично принасти — команда SendMessage,

записка — произвольное сообщение Windows,

письмо — сообщение Windows WM_COPYDATA,

флаг поиска — событие синхронизации (еvent),

поиск лича — команда FindWindow,

поле памятное — оперативная память,

процессорная мана — процессорное время.




Загрузка...