Сокет BeginAcceptSocket vs Task.Run - PullRequest
       17

Сокет BeginAcceptSocket vs Task.Run

0 голосов
/ 21 февраля 2019

У меня есть два варианта:

  1. Синхронно принять сокет и затем обработать новое задание:
while (true) {
    var socket = tcpListener.Accept();
    Task.Run(async () => await RunConnectionAsync(socket));
}
Принять сокет асинхронно и сокет процесса, когда принят обратный вызов
while (true)
{
    allDone.Reset();
    tcpListener.BeginAcceptSocket(AcceptCallback, tcpListener);
    allDone.WaitOne();
}

private static void AcceptCallback(IAsyncResult result)
{
    allDone.Set();

    var listener = (TcpListener)result.AsyncState;
    var socket = listener.EndAcceptSocket(result);

    ProcessSocket(socket);
}

С точки зрения производительности, какое решение лучше?

...