कंप्यूटर विज्ञान के संदर्भ में, Task
एक भविष्य या एक वादा है । (कुछ लोग उन दो शब्दों का समान रूप से उपयोग करते हैं, कुछ उन्हें अलग तरह से उपयोग करते हैं, कोई भी सटीक परिभाषा पर सहमत नहीं हो सकता है ।) मूल रूप से, एक Task<T>
"वादे" आपको वापस करने के लिए T
, लेकिन अभी नहीं शहद, मैं थोड़े व्यस्त हूं, क्यों नहीं तुम बाद में लौट आना
A Thread
उस वादे को पूरा करने का एक तरीका है। लेकिन हर Task
किसी को एक नया-नया चाहिए Thread
। (वास्तव में, एक धागा बनाना अक्सर अवांछनीय होता है, क्योंकि ऐसा करना थ्रेडपूल के मौजूदा थ्रेड को फिर से उपयोग करने की तुलना में बहुत अधिक महंगा है। एक पल में उस पर अधिक।) यदि आप जिस मूल्य की प्रतीक्षा कर रहे हैं वह फाइलसिस्टम से आता है या ए। डेटाबेस या नेटवर्क, तब किसी थ्रेड के लिए आस-पास बैठने और डेटा की प्रतीक्षा करने की आवश्यकता नहीं होती है जब यह अन्य अनुरोधों की सेवा कर सकता है। इसके बजाय, Task
वे तैयार होने पर मूल्य प्राप्त करने के लिए कॉलबैक दर्ज कर सकते हैं।
विशेष रूप से, Task
यह नहीं कहता है कि ऐसा क्यों है कि मूल्य को वापस करने के लिए इतना लंबा समय लगता है। यह हो सकता है कि गणना करने में लंबा समय लगता है, या यह हो सकता है कि इसे लाने में लंबा समय लगता है। केवल पूर्व मामले में आप एक Thread
चलाने के लिए एक का उपयोग करेंगे Task
। (.NET में, थ्रेड्स महंगे हैं, इसलिए आप आम तौर पर इनसे जितना संभव हो उतना बचना चाहते हैं और वास्तव में इनका उपयोग केवल तब करते हैं जब आप कई सीपीयू पर कई भारी गणनाएँ चलाना चाहते हैं। उदाहरण के लिए, विंडोज में, एक धागे का वजन 12 KiBtete होता है। मुझे लगता है), लिनक्स में, एक धागा का वजन 4 KiByte से कम होता है, Erlang / BEAM में भी 400 बाइट होता है। .NET में, यह 1 MiByte है!)