2/19/2009

윈도우즈가 제공하는 Atomic Operation API들


InterlockedExchange*나 Increment, Decrement만을 주로 사용하기는 하지만 다른 API들도 꽤 많다. 특히 LIST_ENTRY를 Atomic하게 조작할 수 있는 API들은 꽤 유용할 듯 싶다. 몇몇 API들을 디스어셈블해보면 #LOCK Prefix를 사용한다. LIST_ENTRY조작하는 API들은 아마도 내부적으로 InterlockedExchange*를 쓰지 않을까 추측하지만 확인해 보지 못했다.

InterlockedAdd InterlockedAdd64 InterlockedAddAcquire InterlockedAddAcquire64 InterlockedAddRelease InterlockedAddRelease64

InterlockedAnd InterlockedAndAcquire InterlockedAndRelease InterlockedAnd8 InterlockedAnd8Acquire InterlockedAnd8Release InterlockedAnd16 InterlockedAnd16Acquire InterlockedAnd16Release InterlockedAnd64 InterlockedAnd64Acquire InterlockedAnd64Release

InterlockedBitTestAndReset InterlockedBitTestAndReset64 InterlockedBitTestAndSet InterlockedBitTestAndSet64

InterlockedCompare64Exchange128 InterlockedCompare64ExchangeAcquire128 InterlockedCompare64ExchangeRelease128

InterlockedCompareExchange InterlockedCompareExchange64 InterlockedCompareExchangeAcquire InterlockedCompareExchangeAcquire64 InterlockedCompareExchangePointer InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointerRelease InterlockedCompareExchangeRelease InterlockedCompareExchangeRelease64

InterlockedDecrement InterlockedDecrement64 InterlockedDecrementAcquire InterlockedDecrementAcquire64 InterlockedDecrementRelease InterlockedDecrementRelease64

InterlockedExchange InterlockedExchange64 InterlockedExchangeAcquire InterlockedExchangeAcquire64 InterlockedExchangeAdd InterlockedExchangeAdd64 InterlockedExchangeAddAcquire InterlockedExchangeAddAcquire64

InterlockedExchangeAddRelease InterlockedExchangeAddRelease64

InterlockedExchangePointer InterlockedExchangePointerAcquire

InterlockedFlushSList InterlockedIncrement

InterlockedIncrement64 InterlockedIncrementAcquire InterlockedIncrementAcquire64

InterlockedIncrementRelease InterlockedIncrementRelease64

InterlockedOr InterlockedOrAcquire InterlockedOrRelease InterlockedOr8 InterlockedOr8Acquire InterlockedOr8Release InterlockedOr16 InterlockedOr16Acquire InterlockedOr16Release InterlockedOr64 InterlockedOr64Acquire InterlockedOr64Release

InterlockedPopEntrySList InterlockedPushEntrySList

InterlockedXor InterlockedXorAcquire InterlockedXorRelease InterlockedXor8 InterlockedXor8Acquire InterlockedXor8Release InterlockedXor16 InterlockedXor16Acquire InterlockedXor16Release InterlockedXor64 InterlockedXor64Acquire InterlockedXor64Release

Posted via email from bugtruck's posterous

댓글 없음:

댓글 쓰기