컴퓨터 과학 용어로, 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입니다!)