TaskFactory.FromAsync
我想知道使用 TPL和使用TaskFactory.StartNew
方法的阻塞版本之间是否有任何性能影响。我正在编写一个支持不超过 100 个并发连接的 TCP 服务器。在使用第一个选项编写代码并使用 continue with 链接多个读写操作之后,我留下了丑陋、难以调试的代码。
我相信用同步版本编写代码然后用任务包装它会降低复杂性并增加可测试性,但我担心这样做会影响性能。
例如,这两个调用之间是否存在任何性能差异:
NetworkStream stream;
byte[] data;
int bytesRead;
//using FromAsync
Task<int> readChunk = Task<int>.Factory.FromAsync (
stream.BeginRead, stream.EndRead,
data, bytesRead, data.Length - bytesRead, null);
//using StartNew with blocking version
Task<int> readChunk2 = Task<int>.Factory.StartNew(() =>
stream.Read(data, bytesRead, data.Length - bytesRead));