views:

429

answers:

3

GCC's recent support for atomic operations (as described here) is great, and is 90% of what we need. Unfortunately, some of our products still need to run on Windows and so we need atomic integer operations for Windows as well.

In the past, we had custom assembly language implementations for all our platforms, but I'd like move all the *nix platforms over to the GCC supported operations and the thought crossed my mind that perhaps there is also a more standard way to do this on Windows now as well...

Is there an officially sanctioned way of doing this on Windows (other than implementing them yourself in assembly language)?

+6  A: 

You want the Interlocked functions.

jeffamaphone
Yup. A better link would be http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx - the summary page for all such functions in Win32 API.
Pavel Minaev
Good point. You can always just edit my answer, but I've gone and changed it here. :)
jeffamaphone
A: 

It depends on which of those you need -- I don't think there's a (pre-built) implementation of every one of them on Windows (except possibly within gcc) but some of them have been around for quite a while. Windows has InterlockedIncrement, InterlockedDecrement, InterlockedAdd, InterlockedOr, InterlockedXor, and so on.

Jerry Coffin
A: 

GLib provides some atomic operations, and they are known to run on windows. You can inspect the sources for ideas or directly pick the code you need.

ntd