मैं सोच रहा था कि टीपीएल TaskFactory.FromAsync
और विधियों के संस्करणों को अवरुद्ध करने पर TaskFactory.StartNew
का उपयोग करने के बीच कोई प्रदर्शन प्रभाव था या नहीं। मैं एक टीसीपी सर्वर लिख रहा हूं जो 100 से अधिक समवर्ती कनेक्शन का समर्थन नहीं करेगा। पहले विकल्प & के साथ कोड लिखने के बाद एकाधिक पढ़ने & जारी रखने के साथ ऑपरेशन लिखने के बाद, मुझे बदसूरत, हार्ड कोड को डीबग करने के लिए छोड़ दिया गया था।TPL TaskFactory.FromAsync बनाम ब्लॉकिंग विधियों के साथ कार्य
मुझे लगता है कि सिंक्रोनस संस्करण & के साथ कोड लिखने पर विश्वास है तो इसे एक कार्य के साथ लपेटकर जटिलता & टेस्टेबिलिटी में वृद्धि होगी, लेकिन मैं ऐसा करने के प्रदर्शन के प्रभावों के बारे में चिंतित हूं।
उदाहरण के लिए, इन 2 कॉल के बीच किसी भी प्रदर्शन अंतर हैं:
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 के साथ सिंक्रोनस संस्करण का उपयोग करने से Async के साथ प्रारंभ/अंत का उपयोग करना बेहतर है? आप जो कहते हैं वह समझ में आता है, मैं इसे कहीं कहीं आधिकारिक पढ़ना पसंद करता हूं। –