TPL TaskFactory.FromAsync
을 사용하고 TaskFactory.StartNew
을 사용하는 것 사이에 성능에 영향이 있는지 궁금 해서요. 100 개 이상의 동시 연결을 지원하는 TCP 서버를 작성 중입니다. 첫번째 옵션이 & 인 코드를 작성한 후 여러 번 읽는 작업을 계속하려면 & 쓰기 작업을 계속하면 코드를 디버그하기가 어렵습니다.TPL TaskFactory.FromAsync와 차단 방법이있는 작업
동기화 버전 &으로 코드를 작성한 다음 작업으로 래핑하면 복잡성이 줄어 듭니다. & 테스트 가능성이 증가하지만 성능 향상에 대해 걱정됩니다. 예를 들어
, 이들 두 통화 사이의 성능 차이가 있습니다 : API를이 방법의 BeginXXX/EndXXX 버전을 제공 할 때
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));
당신이 웹 메소드를 호출하는 말을 어떤 소스가 있나요 (예를 들어) Async와 함께 Begin/End를 사용하는 것이 Async와 함께 동기 버전을 사용하는 것보다 낫습니다. 당신이 말하는 것은 의미가 있습니다, 나는 단지 그것을 어딘가에 공식적으로 읽는 것을 좋아합니다. –