Deadlock Empire — игра для разработчиков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.



Хабр, как известно, не место для игр, но мы нашли одно исключение, которое, как нам кажется, достойно упоминания здесь!

Встречайте: Deadlock Empire!

Суть игры — управление планировкой потоков, код которых приведен в заданиях. Управлять нужно так, чтобы добиться ошибочной ситуации: взаимблокировки, повторных значений счетчиков, достижения определенных участков кода и прочих непредвиденных ситуаций, которые нужно осознавать при разработке многопоточных приложений.

Геймплей представляет из себя пошаговое выполнение потоков программы в отладчике с той разницей, что здесь вы буквально говорите выбранному потоку выполнить следующую строчку кода, а не вставляете в его код брейкпоинт. Обычно за раз выполняется одна строчка кода, но если строчка представляет неатомарную операцию, ее нужно вручную развернуть, чтобы выполнить составляющие ее операции по одной. При этом вы не полностью владеете ситуацией: если процесс заблокируется, например, на мьютексе, он будет неактивным, пока другой поток его не освободит.

Задания упорядочены по сложности и объединены в разделы:

  1. Несинхронизированный код. Задания в этом разделе дают базовые понятия о том, что происходит при параллельном выполнении потоков, использующих общие потоконебезопасные ресурсы.
  2. Блокировки. Раздел дает представление о том, что бывает, если не корректно использовать базовые примитивы синхронизации.
  3. Высокоуровневые примитивы синхронизации. Демонстрирует ошибки и заблуждения, встречающиеся при использовании синхронизации на основе событий.
  4. Семафоры. Название говорит за себя, тут начинается веселье!
  5. Условные переменные. Показывает, как использование условий может вмешаться в синхронизацию потоков.
  6. Финал. В нем вам придется использовать все полученные ранее знания, чтобы сразится с реальными соперниками: защититься от огнедышащего дракона, его электрифицированной версии, и в финале рассеять тьму и зло!

Код примеров написан на C#, а примитивы синхронизации взяты из .Net, но, даже если вы не знакомы ни с тем ни с другим, вас не должно это пугать. Минимальные знания программирования и способность читать на английском (все задания снабжены комментариями и ссылками на документацию) с высокой вероятностью позвонят вам дойти как минимум до середины. Ну а сеньеры (даже 23-х летние) наверняка одолеют босса, который появится в финале! И даже съевшие собаку на синхронизации потоков хорошо проведут время, решая интересные задачи, поскольку авторам удалось сделать веселым то, что в реальной жизни представляет один из самых страшных кошмаров для разработчика.

Игра полезна как инструмент для обучения и строго рекомендована всем начинающим разработчикам, как минимум, на .Net и Java. 

Желаем всем хорошей пятницы и скорейшей победы над Боссом! :)
Источник: https://habr.com/ru/company/avanpost/blog/488320/#habracut

Интересные статьи

Интересные статьи

Вы знаете, каково это. Впихнуть всё необходимое в спринт и так весьма непросто, а ведь ещё нужно где-то найти дополнительные 10–20% времени разработчиков на возврат технического долга. Если вы ...
Психологическое здоровье команды, персональное выгорание, мотивация — такие темы всегда актуальны в ИТ-комьюнити. Об этом говорят на конференциях, обсуждают в подкастах и просто делятся советами ...
Недавно в славном городе Калуге проходила XVI конференция разработчиков свободных программ. Конференцию организовывала компания “Базальт-СПО”. Embox, являясь свободным проектом, также выступал н...
Как упростить себе жизнь при помощи браузерных плагинов. Хитрые веб-разработчики умеют пользоваться браузером на уровне «god-mode». Расширения(плагины, add-on) чрезвычайно полезны, когда речь ...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.