Я работаю над онлайн-FPS, написанным на C #, который будет использовать P2P для соединения игроков вместо централизованного сервера.Мне нужен быстрый способ прочитать данные из каждого потока, а затем уведомить игру о получении пакета.
class StreamReader
{
List<XStream> streams;
onPeerFound(XStream stream) {
System.Threading.Thread mthread = new System.Threading.Thread(targetthread);
mthread.start(stream);
}
void targetthread(object sender) {
XStream mstream = (XStream)sender;
while(isrunning) {
byte[] buffer = new byte[4086];
Array.Resize<byte>(ref buffer,mstream.Read(buffer,0,4086));
onPacketReceived.Invoke(buffer,mstream.remoteID);
}
}
}
Есть ли более быстрый способ сделать это без создания отдельного потока для каждого потока?Обратите внимание, что каждый XStream также имеет свойство DataAvailable, которое возвращает объем данных в приемном буфере.