Дизайн / псевдокод для потока прослушивания в чем-то вроде XNA? - PullRequest
0 голосов
/ 16 сентября 2009

Ладно, вот что я пытаюсь сделать:

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

Итак, я знаком с основными принципами работы с потоками, однако мне интересно, делал ли кто-то это раньше и что я могу сделать, чтобы спроектировать / реализовать это? Мне нужно держать потоки разделенными (то есть поток XNA не может начать выполнять код потока прослушивания и наоборот). Я думаю, что это, по сути, проблема производителя, однако, если бы кто-нибудь мог дать мне какой-нибудь код .NET / XNA (или псевдокод), в котором описана нужная мне синхронизация, это было бы очень полезно.

Не стесняйтесь просить разъяснений ... Я постараюсь редактировать по мере необходимости.

1 Ответ

1 голос
/ 16 сентября 2009

Метод draw в XNA запускается как отдельный поток, который постоянно запускается. Таким образом, в основном, это просто вопрос записи новой сетки в нарисованные объекты, которые будет отображаться при следующем проходе, иначе, если новые данные еще не доступны, вместо этого будут просто отображаться старые сетки.

Это устраняет необходимость синхронизации с фактическим рендером, поскольку он, вероятно, будет рендериться быстрее, чем вы обновляете эти переменные в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...