Thread.SpinWait(Int32) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
스레드가 iterations
매개 변수에서 정의하는 시간 동안 대기하도록 합니다.
public:
static void SpinWait(int iterations);
public static void SpinWait (int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)
매개 변수
- iterations
- Int32
스레드 대기 시간을 정의하는 부호 있는 32비트 정수입니다.
설명
메서드는 잠금을 구현 하는 데 SpinWait 유용 합니다. .NET Framework의 클래스 (예: 및)는 Monitor ReaderWriterLock 내부적으로이 메서드를 사용 합니다. SpinWait 는 기본적으로 매개 변수에 지정 된 루프 수를 사용 하 여 프로세서를 매우 근접 한 루프로 전환 합니다 iterations
. 따라서 대기 시간은 프로세서 속도에 따라 달라 집니다.
Sleep메서드와 비교 합니다. 을 호출 하는 스레드는 Sleep 지정 된 간격이 0 인 경우에도 현재 프로세서 시간 조각의 나머지를 생성 합니다. 에 0이 아닌 간격을 지정 하면 Sleep 시간 간격이 경과할 때까지 스레드 스케줄러에서 스레드를 고려 하지 않도록 제거 합니다.
SpinWait 일반적인 애플리케이션에 일반적으로 유용 하지 않습니다. 대부분의 경우 .NET Framework에서 제공 하는 동기화 클래스를 사용 해야 합니다. 예를 들어를 호출 Monitor.Enter 하거나 Monitor.Enter ( lock
c #에서는) 또는 (Visual Basic)로 래핑하는 문을 사용 해야 합니다 SyncLock
.
주의
드문 경우 지만 상태 변경이 임박 하 고 있는 경우와 같이 컨텍스트 전환을 방지 하는 것이 좋은 경우에는 SpinWait 루프에서 메서드를 호출 합니다. 실행 되는 코드는 SpinWait 여러 프로세서가 있는 컴퓨터에서 발생할 수 있는 문제를 방지 하기 위해 설계 되었습니다. 예를 들어 Hyper-Threading 기술을 사용 하는 여러 Intel 프로세서가 있는 컴퓨터에서는 SpinWait 특정 상황에서 프로세서가 고갈 되지 않도록 방지 합니다.