Code: Select all
InterlockedIncrement_()
Error. referenced by Purebasic.obj:(WinMain)
Code: Select all
InterlockedIncrement_()
Error. referenced by Purebasic.obj:(WinMain)
Code: Select all
Macro _glockInc(var)
CompilerIf #PB_Compiler_Backend = #PB_Backend_C
! __atomic_fetch_add(&v_#var,1,__ATOMIC_SEQ_CST);
CompilerElse
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
!lock add dword [v_#var],1
CompilerElse
!lock add qword [v_#var],1
CompilerEndIf
CompilerEndIf
EndMacro
Macro _plockInc(var)
CompilerIf #PB_Compiler_Backend = #PB_Backend_C
! __atomic_fetch_add(&v_#var,1,__ATOMIC_SEQ_CST);
CompilerElse
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
!lock add dword [p.v_#var],1
CompilerElse
!lock add qword [p.v_#var],1
CompilerEndIf
CompilerEndIf
EndMacro
Procedure foo(x)
_plockInc(x)
Debug x
EndProcedure
x.i = 1
_glockInc(x)
Debug x
foo(x)