18:04 [mayhem] to[Дверь] маф, партия
18:04 [ОМОНОВЕЦ] Внимание! Сейчас будет следующий ход.
18:04 [ОМОНОВЕЦ] private[mayhem] Вы убиты и не имеете возможности общаться с того света.
18:04 [ОМОНОВЕЦ] Считаем трупы! Результаты ночных беспорядков.
Я знаю, что сейчас полетят комменты "это нормально, и обсуждалось 1000 раз".
Но если подумать, то мы видим следующее:
Я отправляю сообщение в чат, предположительно поздно, и поэтому получаю сообщение, что я уже умер.
Но как такое может быть? Ответ что я мертв, в чат пришел ДО того, как в чат пришло сообщение что ход закончен.
Понятно, что свои сообщения игрок видит раньше, чем они попадут на сервер. Но, такое предположительно невозможно с чужими сообщениями (т.е. если сервер получил сообщение от игрока №1, а затем от игрока №2, то игрок №3 увидит сообщения именно в том порядке, в котором получил их сервер). Отсюда следует мой вопрос: Как такое может быть?
Легко:)
Например, Сообщения всех игроков пишутся в одном потоке, системные сообщения в другом(возможно таймер) Получается что время уже истекло, а таймер подвис на вводе-выводе и не успел добавить системное сообщение в лог.
Многопоточное программирование вообще такая интересная штука:)
Упийца форума
Легко:)
Например, Сообщения всех игроков пишутся в одном потоке, системные сообщения в другом(возможно таймер) Получается что время уже истекло, а таймер подвис на вводе-выводе и не успел добавить системное сообщение в лог.
Многопоточное программирование вообще такая интересная штука:)
Только вот 2 сообщения на которые делается упор - системные)) Т.е. омон решил что я мертв, еще до того как день настал, что то тут не так)
Легко:)
Например, Сообщения всех игроков пишутся в одном потоке, системные сообщения в другом(возможно таймер) Получается что время уже истекло, а таймер подвис на вводе-выводе и не успел добавить системное сообщение в лог.
Многопоточное программирование вообще такая интересная штука:)Только вот 2 сообщения на которые делается упор - системные)) Т.е. омон решил что я мертв, еще до того как день настал, что то тут не так)
Не совсем, я же писал что все сообщения от игроков скорее всего идут в одном потоке(в том числе и то что вы не можете писать бла-бла), а всякие ход закончился, честный посажен и тп - от таймера.
Упийца форума
Понятно, что свои сообщения игрок видит раньше, чем они попадут на сервер. Но, такое предположительно невозможно с чужими сообщениями (т.е. если сервер получил сообщение от игрока №1, а затем от игрока №2, то игрок №3 увидит сообщения именно в том порядке, в котором получил их сервер). Отсюда следует мой вопрос: Как такое может быть?
Ну, да. Только ОМОНОВЕЦ не совсем игрок. =)
В целом Пузырь правдоподобно описал — чат и обработчик ходов не связаны друг с другом. Конечно, можно прилепить транзакционность для системных сообщений (благо, Redis её поддерживает), но в общем случае это не сильно актуально.
«О гордости, предательстве и братстве закончена история моя! И если не посмеешь ты вмешаться, я закрываю книгу бытия…»