컴퓨터 과학 용어로, a Task는 미래 또는 약속 입니다. (어떤 사람들은이 두 단어를 동의어로 사용하고, 어떤 사람들은 다르게 사용하며, 아무도 정확한 정의 에 동의 할 수 없습니다 .) 기본적으로, Task<T>당신을 돌려 주는 "약속" T, 그러나 지금은 아니고 여보, 좀 바빠요. 나중에 다시 오세요?
A Thread는 그 약속을 이행하는 방법입니다. 그러나 모든 사람 Task에게 새로운 브랜드가 필요한 것은 아닙니다 Thread. (실제로 스레드를 작성하는 것은 스레드 풀에서 기존 스레드를 재사용하는 것보다 훨씬 비싸기 때문에 종종 바람직하지 않습니다. 잠시 후에 더 많은 값을 얻으십시오.) 대기중인 값이 파일 시스템 또는 다른 요청을 처리 할 수있을 때 스레드가 앉아서 데이터를 기다릴 필요가 없습니다. 대신, Task준비가되면 값을 받기 위해 콜백을 등록 할 수 있습니다.
특히,는 Task않습니다 하지 말 이유는 그것이 값을 반환하는 등 시간이 오래 걸리는 것입니다. 이 수 는 계산하는 데 시간이 오래 걸린다, 또는 그것이 가져 오는 데 시간이 오래 걸린다 수 있습니다. 전자의 경우에만 a Thread를 사용하여 a 를 실행합니다 Task. .NET에서는 스레드가 엄청나게 비싸므로 일반적으로 가능한 많은 스레드를 피하고 여러 CPU에서 여러 개의 무거운 계산을 실행하려는 경우에만 실제로 사용합니다. 예를 들어 Windows의 경우 스레드의 무게는 12 KiByte ( 리눅스에서는 스레드의 무게가 4KB, Erlang / BEAM, 심지어 400 바이트에 불과합니다. .NET에서는 1MiByte입니다!)