我想知道在使用TPL TaskFactory.FromAsync
和使用TaskFactory.StartNew
阻塞版本的方法之间是否有任何性能影响。我正在写一个支持不超过100个并发连接的TCP服务器。在用第一个选项&编写代码之后,连续多次读取&写入操作,结果我留下了难看,难以调试的代码。TPL TaskFactory.FromAsync vs带阻塞方法的任务
我相信用同步版本&编写代码,然后用Task包装它会降低复杂性&增加可测试性,但是我担心这样做的性能影响。
例如,是否有这两个电话之间的性能差异:
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));
你有这不能不调用Web方法的任何资源(例如)使用Begin/End和Async比使用Async同步版更好?你说什么是有道理的,我只是喜欢在官方的地方阅读它。 – 2012-06-27 12:36:50