Bilgisayar bilimi açısından, a Task
bir gelecek ya da bir vaattir . (Bazı insanlar bu iki terimi eşzamanlı olarak kullanır, bazıları farklı kullanır, kimse kesin bir tanım üzerinde anlaşamaz .) Temel olarak, Task<T>
size geri dönme sözü verir T
, ama şu anda değil tatlım, neden biraz meşgulüm sonra geri mi geleceksin?
A Thread
bu sözü yerine getirmenin bir yoludur. Ancak her Task
birinin yepyeni bir şeye ihtiyacı yoktur Thread
. (Aslında, bir iş parçacığı oluşturmak genellikle istenmeyen bir durumdur, çünkü bunu yapmak iş parçacığındaki mevcut bir iş parçacığını yeniden kullanmaktan çok daha pahalıdır. Bir an için daha fazlası.) Beklediğiniz değer dosya sisteminden veya veritabanına veya ağa bağlanırsa, bir iş parçacığının oturup diğer isteklere hizmet edebileceği durumlarda verileri beklemesine gerek kalmaz. Bunun yerine, Task
hazır olduklarında değerleri almak için bir geri arama kaydedebilir.
Özellikle, Task
yok değil demek niye buna değer döndürmek için bu kadar uzun bir zaman almasıdır. Bu belki de hesaplamak için uzun bir zaman alır olmayabilir ya buna getirmek için uzun zaman alır olabilir. Yalnızca önceki durumda a'yı Thread
çalıştırmak için a kullanırsınız Task
. (.NET'te, iş parçacıkları pahalıdır, bu nedenle genellikle mümkün olduğunca kaçınmak ve bunları yalnızca birden çok CPU'da birden fazla ağır hesaplama çalıştırmak istiyorsanız kullanın. Örneğin, Windows'ta bir iş parçacığı 12 KiByte ( Sanırım), Linux'ta bir iplik 4 KiByte kadar ağır, Erlang / BEAM'de sadece 400 Byte bile. .NET'te 1 MiByte!)