У меня есть сокет домена linux, который я читаю с помощью SocketTaskExtensions ReceiveAsync.
К сожалению, когда нет данных для приема, await ReceiveAsync немедленно возвращает ноль байтов, что вызывает использование 70% ЦП, когда я вызываю ReceiveAysnc иover.
Есть ли способ заставить ReceiveAsync ожидать> 0 байтов данных перед возвратом.
Вот мой код:
byte[] buffer = new byte[1024];
var arraySegment = new ArraySegment<byte>(buffer);
while(socket.Connected)
{
var bytesRecieved = await socket.ReceiveAsync(arraySegment, SocketFlags.None);
if(bytesRecieved == 0)
{
Console.WriteLine("received zero bytes :(");
continue;
}
// data processing goes here
}
Если нетспособ заставить ReceiveAsync ожидать больше нуля данных, есть ли другой асинхронный способ ожидания данных в сокете без опроса?