mayhem
Аватар
Игрок
4 
16.08.2012 15:14:21

Чат

18:04 [mayhem] to[Дверь] маф, партия
18:04 [ОМОНОВЕЦ] Внимание! Сейчас будет следующий ход.
18:04 [ОМОНОВЕЦ] private[mayhem] Вы убиты и не имеете возможности общаться с того света.
18:04 [ОМОНОВЕЦ] Считаем трупы! Результаты ночных беспорядков.


Я знаю, что сейчас полетят комменты "это нормально, и обсуждалось 1000 раз".
Но если подумать, то мы видим следующее:

Я отправляю сообщение в чат, предположительно поздно, и поэтому получаю сообщение, что я уже умер.

Но как такое может быть? Ответ что я мертв, в чат пришел ДО того, как в чат пришло сообщение что ход закончен.

Понятно, что свои сообщения игрок видит раньше, чем они попадут на сервер. Но, такое предположительно невозможно с чужими сообщениями (т.е. если сервер получил сообщение от игрока №1, а затем от игрока №2, то игрок №3 увидит сообщения именно в том порядке, в котором получил их сервер). Отсюда следует мой вопрос: Как такое может быть?

16.08.2012 15:18:28

Re: Чат

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


Упийца форума

mayhem
Аватар
Игрок
4 
16.08.2012 16:04:54

Re: Чат

Желчный пузырь

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

Только вот 2 сообщения на которые делается упор - системные)) Т.е. омон решил что я мертв, еще до того как день настал, что то тут не так)

16.08.2012 16:38:32

Re: Чат

mayhem
Желчный пузырь

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

Только вот 2 сообщения на которые делается упор - системные)) Т.е. омон решил что я мертв, еще до того как день настал, что то тут не так)

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


Упийца форума

Властелин Ничего
Аватар
ещё не поздно… решить проблему…
9  
16.08.2012 18:23:56

Re: Чат

mayhem

Понятно, что свои сообщения игрок видит раньше, чем они попадут на сервер. Но, такое предположительно невозможно с чужими сообщениями (т.е. если сервер получил сообщение от игрока №1, а затем от игрока №2, то игрок №3 увидит сообщения именно в том порядке, в котором получил их сервер). Отсюда следует мой вопрос: Как такое может быть?

Ну, да. Только Информация о персонаже ОМОНОВЕЦ  не совсем игрок. =)

В целом Пузырь правдоподобно описал — чат и обработчик ходов не связаны друг с другом. Конечно, можно прилепить транзакционность для системных сообщений (благо, Redis её поддерживает), но в общем случае это не сильно актуально.


«О гордости, предательстве и братстве закончена история моя! И если не посмеешь ты вмешаться, я закрываю книгу бытия…»

02.11.2012 11:07:21

Re: Чат

Тема закрыта модератором Властелин Ничего 02.11.2012 11:07:21