Dalam istilah ilmu komputer, a Task
adalah masa depan atau janji . (Beberapa orang menggunakan kedua istilah itu secara sinonim, beberapa menggunakannya secara berbeda, tidak ada yang bisa menyetujui definisi yang tepat .) Pada dasarnya, sebuah Task<T>
"janji" untuk mengembalikan Anda T
, tetapi tidak sekarang sayang, saya agak sibuk, kenapa tidak kamu kembali lagi nanti?
A Thread
adalah cara untuk memenuhi janji itu. Tetapi tidak setiap orang Task
membutuhkan yang baru Thread
. (Sebenarnya, membuat utas sering kali tidak diinginkan, karena melakukannya jauh lebih mahal daripada menggunakan ulang utas yang ada dari threadpool. Lebih lanjut tentang itu sebentar lagi.) Jika nilai yang Anda tunggu berasal dari sistem file atau database atau jaringan, maka tidak perlu thread untuk duduk dan menunggu data ketika dapat melayani permintaan lainnya. Sebagai gantinya, mereka Task
mungkin mendaftarkan panggilan balik untuk menerima nilai saat mereka siap.
Secara khusus, Task
tidak tidak mengatakan mengapa hal itu adalah bahwa dibutuhkan waktu yang lama untuk kembali nilai. Ini mungkin bahwa dibutuhkan waktu yang lama untuk menghitung, atau mungkin bahwa dibutuhkan waktu yang lama untuk mengambil. Hanya dalam kasus sebelumnya Anda akan menggunakan a Thread
untuk menjalankan a Task
. (Dalam. NET, utas sangat mahal, jadi Anda umumnya ingin menghindarinya sebanyak mungkin dan benar-benar hanya menggunakannya jika Anda ingin menjalankan banyak perhitungan berat pada banyak CPU. Misalnya, di Windows, utas berbobot 12 KiByte ( Saya pikir), di Linux, utas berbobot hanya 4 KiByte, di Erlang / BEAM bahkan hanya 400 Byte. Dalam .NET, ini 1 MiByte!)