Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why InterlockedAdd is not available in vs2010?

I have include windows.h and want to use InterlockedAdd in vs2010 and compiles error "identifier not found", but the InterlockedIncrement can work well. I try to use:

#include <intrin.h>
#pragma intrinsic(_InterlockedAdd) 

and compiles error:

warning C4163: '_InterlockedAdd' : not available as an intrinsic function
1>test10.cpp(107): error C3861: 'InterlockedAdd': identifier not found

What's wrong with the code?

like image 449
magicyang Avatar asked Jan 30 '13 11:01

magicyang


1 Answers

The InterlockedAdd function is only available on the Itanium platform. On x86 and x86-64 platforms you can use InterlockedExchangeAdd instead. This also adds a value to the target variable, but it returns the original value instead of the new value.

like image 196
interjay Avatar answered Oct 22 '22 12:10

interjay