Как заставить SocketTaskExtensions ReceiveAsync ожидать данные - PullRequest
0 голосов
/ 04 октября 2019

У меня есть сокет домена 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 ожидать больше нуля данных, есть ли другой асинхронный способ ожидания данных в сокете без опроса?

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