2014-03-04 38 views
0

我被迫在windows 98 se中運行一些應用程序。 vc6有奇怪InterlockedCompareExchange定義:Windows 98環境下的InterlockedCompareExchange

void* InterlockedCompareExchange(void**, void*, void*); 

msdn定義它像這樣但是,(因爲windows xp):

LONG InterlockedCompareExchange(LONG*, LONG, LONG); 

有誰還記得如何使用它(我需要原子得到互鎖變量的值)?

+0

IIRC,也不要緊。 – MSalters

+2

@ MSalters:當然可以。 –

+0

@MSalters'win98'有線程,它還有其他'Interlocked *'函數。 – Ivars

回答

0

Windows 98不支持64位,所以void*LONG是相同的字節大小。大多數操作系統實際使用LONG定義,但如果VC6使用`無效*然後只需鍵入鑄在需要的地方:反正Win98下沒有主題:

LONG value; 
LONG ret = (LONG) InterlockedCompareExchange((void**)&value, (void*)ExchangeValue, (void*)CompareValue);