반응형
Thread.Sleep 대 Task.Delay?
Thread.Sleep
스레드 를 차단 한다는 것을 알고 있습니다.
그러나 Task.Delay
또한 차단합니까? 아니면 Timer
모든 콜백에 대해 하나의 스레드를 사용 하는 것과 같습니다 (겹치지 않을 때)?
( 이 질문은 차이점을 다루지 않습니다)
MSDN의 문서는 실망 스럽지만 Task.Delay
Reflector를 사용하여 디 컴파일 하면 더 많은 정보를 얻을 수 있습니다.
public static Task Delay(int millisecondsDelay, CancellationToken cancellationToken)
{
if (millisecondsDelay < -1)
{
throw new ArgumentOutOfRangeException("millisecondsDelay", Environment.GetResourceString("Task_Delay_InvalidMillisecondsDelay"));
}
if (cancellationToken.IsCancellationRequested)
{
return FromCancellation(cancellationToken);
}
if (millisecondsDelay == 0)
{
return CompletedTask;
}
DelayPromise state = new DelayPromise(cancellationToken);
if (cancellationToken.CanBeCanceled)
{
state.Registration = cancellationToken.InternalRegisterWithoutEC(delegate (object state) {
((DelayPromise) state).Complete();
}, state);
}
if (millisecondsDelay != -1)
{
state.Timer = new Timer(delegate (object state) {
((DelayPromise) state).Complete();
}, state, millisecondsDelay, -1);
state.Timer.KeepRootedWhileScheduled();
}
return state;
}
기본적으로이 메서드는 작업 내부에 래핑 된 타이머입니다. 예, 마치 타이머와 같다고 말할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/17258428/thread-sleep-vs-task-delay
반응형
'Development Tip' 카테고리의 다른 글
요소에서 창으로 스크롤 버블 링 방지 (0) | 2021.01.08 |
---|---|
char와 char [1]의 차이점 (0) | 2021.01.08 |
R의 가상 환경? (0) | 2021.01.08 |
React vs Angular : React를 사용한 느린 렌더링 (0) | 2021.01.08 |
부호 별 또는 크기별 유형과 비교하여 "int"를 사용해야하는 경우는 언제입니까? (0) | 2021.01.08 |