Здравствуйте, Wawan, Вы писали:
W>думаю этим занимаются в реализации std mutex и иже с ними
W>просто многие любят lock free алгоритмы а на арме их надо отлаживать заново
А вы точно ARM и ARM64 не путаете?
_InterlockedExchangePointer от MSVC:
0000000180001700 adrp x16, 000000018003E000 → _AtomicsV81Support@PAGE
0000000180001704 ldr w16, [x16,#9C0] → _AtomicsV81Support@PAGEOFF
0000000180001708 tbz w16, #0, 0000000180001718 ↓
000000018000170C swpal x1, x0, [x0]
0000000180001710 dmb ish
0000000180001714 ret
0000000180001718 cbz x16, 0000000180001734 ↓
000000018000171C ldaxr x2, [x0]
0000000180001720 stlxr w16, x1, [x0]
0000000180001724 cbnz w16, 000000018000171C ↑
0000000180001728 dmb ish
000000018000172C mov x0, x2
0000000180001730 ret
Тут вам аж 2 варианта: через атомарный SWPAL (для более новых процов) и LDAXR/STLXR (для старых).