동기화의 새로운 기능

Windows에는 동기화를 위한 다음과 같은 새로운 프로그래밍 요소가 포함되어 있습니다.

Windows 8

새로운 함수

DeleteSynchronizationBarrier

동기화 장벽을 삭제합니다.

EnterSynchronizationBarrier

최대 스레드 수가 장벽에 들어갈 때까지 호출 스레드가 동기화 장벽에서 대기하도록 합니다.

GetOverlappedResultEx

지정된 시간 제한 간격 내에서 지정된 파일, 명명된 파이프 또는 통신 디바이스에서 겹치는 작업의 결과를 검색합니다. 호출 스레드는 경고 대기를 수행할 수 있습니다.

InitializeSynchronizationBarrier

새 동기화 장벽에 대한 최대 스레드 수 및 스핀 수를 지정합니다.

WaitOnAddress

지정된 주소의 값이 변경될 때까지 기다립니다.

WakeByAddressAll

주소 값이 변경되기를 기다리는 모든 스레드를 절 해제합니다.

WakeByAddressSingle

주소 값이 변경되는 것을 기다리는 스레드 하나를 절 해제합니다.

새 Interlocked 함수

InterlockedAddNoFence

지정된 LONG 값에 대해 원자성 추가 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedAddNoFence64

지정된 LONGLONG 값에 대해 원자성 추가 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedAndNoFence

지정된 LONG 값에 대해 원자성 AND 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedAnd8NoFence

지정된 char 값에 대해 원자성 AND 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedAnd16NoFence

지정된 SHORT 값에 대해 atomic AND 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedAnd64NoFence

지정된 LONGLONG 값에 대해 atomic AND 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedBitTestAndComplement64

지정된 LONG64 값의 지정된 비트를 테스트하고 보완합니다. 이 작업은 원자성 작업입니다.

InterlockedBitTestAndResetAcquire

지정된 LONG 값의 지정된 비트를 테스트하고 0으로 설정합니다. 작업은 원자성이며 메모리 주문 의미 체계 획득을 사용하여 수행됩니다.

InterlockedBitTestAndResetRelease

지정된 LONG 값의 지정된 비트를 테스트하고 0으로 설정합니다. 작업은 원자성이며 메모리 릴리스 의미 체계를 사용하여 수행됩니다.

InterlockedBitTestAndSetAcquire

지정된 LONG 값의 지정된 비트를 테스트하고 1로 설정합니다. 작업은 원자성이며 메모리 주문 의미 체계 획득을 사용하여 수행됩니다.

InterlockedBitTestAndSetRelease

지정된 LONG 값의 지정된 비트를 테스트하고 1로 설정합니다. 작업은 원자성이며 릴리스 메모리 순서 의미 체계를 사용하여 수행됩니다.

InterlockedCompareExchangeNoFence

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 32비트 값과 교환을 비교 결과에 따라 다른 32비트 값과 비교합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedCompareExchange16

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 16비트 값과 교환을 비교 결과에 따라 다른 16비트 값과 비교합니다.

InterlockedCompareExchange16Acquire

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 16비트 값과 교환을 비교 결과에 따라 다른 16비트 값과 비교합니다. 작업은 메모리 순서 지정 의미 체계를 획득하여 수행됩니다.

InterlockedCompareExchange16Release

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 16비트 값과 교환을 비교 결과에 따라 다른 16비트 값과 비교합니다. 교환은 릴리스 메모리 순서 의미 체계를 사용하여 수행됩니다.

InterlockedCompareExchange16NoFence

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 16비트 값과 교환을 비교 결과에 따라 다른 16비트 값과 비교합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedCompareExchangeNoFence64

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 64비트 값과 교환을 비교 결과에 따라 다른 64비트 값과 비교합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedCompareExchange128

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 128비트 값과 교환을 비교 결과에 따라 다른 128비트 값과 비교합니다.

InterlockedCompareExchangePointerNoFence

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 포인터 값과 교환을 비교 결과에 따라 다른 포인터 값과 비교합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedDecrementNoFence

지정된 32비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedDecrement16

지정된 16비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다.

InterlockedDecrement16Acquire

지정된 16비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다. 작업은 메모리 순서 지정 의미 체계를 획득하여 수행됩니다.

InterlockedDecrement16Release

지정된 16비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다. 이 작업은 릴리스 메모리 순서 의미 체계를 사용하여 수행됩니다.

InterlockedDecrement16NoFence

지정된 16비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedDecrementNoFence64

지정된 64비트 변수의 값을 원자성 연산으로 감소(1씩 감소)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchangeNoFence

64비트 변수를 지정된 값으로 원자성 연산으로 설정합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchange8

8비트 변수를 지정된 값으로 원자성 연산으로 설정합니다.

InterlockedExchange16Acquire

16비트 변수를 지정된 값으로 원자성 연산으로 설정합니다. 작업은 메모리 획득 순서 의미 체계를 사용하여 수행됩니다.

InterlockedExchange16NoFence

16비트 변수를 지정된 값으로 원자성 연산으로 설정합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchangeNoFence64

64비트 변수를 지정된 값으로 원자성 연산으로 설정합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchangePointerNoFence

한 쌍의 주소를 원자성으로 교환합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchangeAddNoFence

두 개의 32비트 값에 대한 원자성 추가를 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedExchangeAddNoFence64

두 개의 64비트 값에 대한 원자성 추가를 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedIncrementNoFence

지정된 32비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedIncrement16

지정된 16비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다.

InterlockedIncrement16Acquire

지정된 16비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다. 작업은 메모리 획득 순서 의미 체계를 사용하여 수행됩니다.

InterlockedIncrement16Release

지정된 16비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다. 이 작업은 릴리스 메모리 순서 의미 체계를 사용하여 수행됩니다.

InterlockedIncrement16NoFence

지정된 16비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedIncrementNoFence64

지정된 64비트 변수의 값을 원자성 연산으로 증분(1씩 증가)합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedOrNoFence

지정된 LONG 값에 대해 원자성 OR 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedOr8NoFence

지정된 char 값에 대해 원자성 OR 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedOr16NoFence

지정된 SHORT 값에 대해 원자성 OR 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedOr64NoFence

지정된 LONGLONG 값에 대해 원자성 OR 연산을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedPushListSListEx

다른 Singly 연결된 목록의 맨 앞에 Singly 연결된 목록을 삽입합니다. 목록에 대한 액세스는 다중 프로세서 시스템에서 동기화됩니다. 이 버전의 메서드는 __fastcall 호출 규칙을 사용하지 않습니다.

InterlockedXorNoFence

지정된 LONG 값에 대해 원자성 XOR 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedXor8NoFence

지정된 char 값에 대해 원자성 XOR 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedXor16NoFence

지정된 SHORT 값에 대해 원자성 XOR 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

InterlockedXor64NoFence

지정된 LONGLONG 값에 대해 원자성 XOR 작업을 수행합니다. 작업은 메모리 장벽을 사용하지 않고 원자성으로 수행됩니다.

Windows 7

새로운 함수

SetWaitableTimerEx

지정된 대기 가능 타이머를 활성화하고 타이머에 대한 컨텍스트 정보를 제공합니다.

TryAcquireSRWLockExclusive

전용 모드에서 SRW(슬림 판독기/기록기) 잠금을 획득하려고 시도합니다. 호출에 성공하면 호출 스레드가 잠금의 소유권을 맡습니다.

TryAcquireSRWLockShared

공유 모드에서 SRW(슬림 판독기/기록기) 잠금을 획득하려고 시도합니다. 호출에 성공하면 호출 스레드가 잠금의 소유권을 맡습니다.

새 구조체

REASON_CONTEXT

SetWaitableTimerEx로 활성화된 타이머에 대한 컨텍스트 정보를 포함합니다.