Синхронизация 2-х потоков

377
02 января 2017, 21:01

Есть 2 потока , которые рисуют 2 машинки на консоли и имитируют их движение. Машинка -Враг- спускается сверху , а игрок должен ее обойти. Отрисовка объектов сделана через lock. Проблема в том , что когда мне надо "замедлить" машинку игрока, то его перемещение влево вправо так же замедлятся (по задумке не должно). Скорость реализована в виде регулировки времени Thread.Sleep(int delta). Подскажите, пожалуйста , возможные варианты решения этой проблемы.

Answer 1

Мне не кажется хорошей сама идея запускать логику разных объектов в разных потоках, и надеяться на планировщик для ускорения и замедления. В конце-концов, передача управления другому потоку ничем не гарантирована. (Ну и это решение очевидно не скалируется на случай, когда объектов становится много, но это уже техническая подробность.)

Я бы сделал по-другому: ввёл бы класс-координатор, который бы в цикле по очереди просил объекты сделать свой «ход», и заботился о нужной задержке (например, опрашивая скорость объектов). При таком дизайне всё бежит в одном потоке, и координатор играет роль планировщика.

READ ALSO
yii2 правила для поддоменов

yii2 правила для поддоменов

ЗдравствуйтеФреймворк YII2

1034
Почему не работает theme_preprocess_menu_link?

Почему не работает theme_preprocess_menu_link?

Требуется сделать так, чтобы в теме Drupal 7 подсвечивался активный пункт меню, для этого нужно задать класс active тегу <li> вместо <a>По определёным...

434
Запись значения из textarea в txt файлы

Запись значения из textarea в txt файлы

ЗдравствуйтеУ меня есть на странице 3 поля textarea

454
Доступ к static protected свойству в php

Доступ к static protected свойству в php

Есть базовый класс View, в котором лежит protected static свойство:

542