我想在x86平臺(Pentium或更高保證)上執行和原子讀取64b對齊的64b數據。如何在x86(Pentium及以上)上執行原子64b讀取?
有沒有辦法做到這一點? (不,我不想爲此使用臨界區或互斥鎖,我希望這是無鎖的)。
我想在x86平臺(Pentium或更高保證)上執行和原子讀取64b對齊的64b數據。如何在x86(Pentium及以上)上執行原子64b讀取?
有沒有辦法做到這一點? (不,我不想爲此使用臨界區或互斥鎖,我希望這是無鎖的)。
使用互鎖操作,這裏的一些示例代碼:
LONGLONG AtomicRead(LONGLONG* p)
{
return InterlockedCompareExchange64(p, 0, 0);
}
這確實比較交流與零和集合P爲零,如果它已經等於零 - 即,它是一個空操作。 InterlockedCompareExchange返回由p指向的原始64位值。
請確認 - 你的意思是64位或字節? – Alnitak 2009-04-24 21:15:59
我假設它是64位。字節不會真的有意義。 – Zifre 2009-04-24 21:18:07
這個問題會更好,如果它在文本中提到Windows而不是隻有win32標記。我看到標籤幫助搜索,而不是信息本身。 – 2009-04-24 23:50:10