Re[6]: Атомарное присваивание указателю
От: bokl  
Дата: 27.10.04 18:44
Оценка:
Здравствуйте, Алексей., Вы писали:

А>Здравствуйте, TheBeard, Вы писали:


TB>>Посмотрите InterlockedCompareExchangeю Если не подойдёт, то, видимо,

TB>>придётся использовать критические секции (если синхронизируется доступ
TB>>внутри одного процесса; для межпроцессной синхронизации потребуется Mutex).

А>То что нужно!

А>Интересно, а InterlockedCompareExchange реализована через специализированную инструкцию процессора или через EnterCriticalSection/LeaveCriticalSection?

Смотрим в kernel32.dll:

.text:7C57B5BC InterlockedCompareExchange proc near ; CODE XREF: sub_7C59933E+A5
.text:7C57B5BC
.text:7C57B5BC Destination = dword ptr 4
.text:7C57B5BC Exchange = dword ptr 8
.text:7C57B5BC Comperand = dword ptr 0Ch
.text:7C57B5BC
.text:7C57B5BC mov ecx, [esp+Destination]
.text:7C57B5C0 mov edx, [esp+Exchange]
.text:7C57B5C4 mov eax, [esp+Comperand]
.text:7C57B5C8
.text:7C57B5C8 loc_7C57B5C8: ; DATA XREF: .data:7C5CA008
.text:7C57B5C8 lock cmpxchg [ecx], edx
.text:7C57B5CC retn 0Ch
.text:7C57B5CC InterlockedCompareExchange endp
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.