Чтение ввода из вторичного потока - PullRequest
1 голос
/ 09 марта 2010

У меня есть приложение XNA, и мне нужно перенаправить входную очередь в пользовательский поток, вместо того, чтобы он был доступен только в основном потоке. Есть ли альтернатива AttachThreadInput?

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Я провел некоторые поиски по этому вопросу, и я не думаю, что вы найдете отличный способ решить эту проблему. Эта запись указывает на то, что это возможно, если вы «создадите новый входной класс, зарегистрируете эти события в главном потоке моих игр, а затем запустите поток, чтобы начать опрос».

Общий консенсус этих двух потоков (включая тот, который вы начали на форумах XNA) показывает мне, что попытка отправить ввод с клавиатуры на другой поток, вероятно, не лучшая идея, и что, если возможно, основной поток должен просто обрабатывать ввод с клавиатуры, а другой поток может читать ввод из общего хранилища основного потока. Альтернативой может быть основной поток, сообщающий вторичному потоку, чтобы он выполнял определенные функции в зависимости от того, какой ввод он получил.

Доступ к клавиатуре из другого потока
Ввод с клавиатуры на другом потоке

0 голосов
/ 11 марта 2010

Я не совсем уверен, что вы спрашиваете, но я постараюсь ответить.

Если вы пытаетесь создать многопользовательскую игру и хотите, чтобы поток каждого игрока обрабатывался потоком, вы должны сделать следующее:

  • Создание объектов XNA, связанных с клавиатурой / мышью / геймпадами, в основном поток выполнения вашего заявка

  • Передайте объекты по ссылке на ваш пользовательский поток обработки ввода.

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

Надеюсь, это поможет.

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