Skip to main content
edited tags
Link
Jan Schultke
  • 43.7k
  • 8
  • 109
  • 189
edited tags; edited title
Link
Jan Schultke
  • 43.7k
  • 8
  • 109
  • 189

C++ atomic operations Is there support for lock-free structuresoperations such as CAS in the standard library?

added 92 characters in body
Source Link
bugmenot77
  • 631
  • 3
  • 6
  • 14

I'm implementing a lock-free mechanism using atomic (double) compare and swap instructions e.g. cmpxchg16b

I'm currently writing this in assembly and then linking it in. However, I wondered if there was a way of getting the compiler to do this for me automatically? e.g. surround code block with 'atomically' and have it go figure it out how to implement the code as an atomic instruction in the underlying processor architecture (or generate an error at compile time if the underlying arch does not support it)?

P.S. I know that gcc has some built-ins (at least for CAS)

http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins

I'm implementing a lock-free mechanism using atomic (double) compare and swap instructions e.g. cmpxchg16b

I'm currently writing this in assembly and then linking it in. However, I wondered if there was a way of getting the compiler to do this for me automatically? e.g. surround code block with 'atomically' and have it go figure it out (or generate an error at compile time if the underlying arch does not support it)?

P.S. I know that gcc has some built-ins (at least for CAS)

http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins

I'm implementing a lock-free mechanism using atomic (double) compare and swap instructions e.g. cmpxchg16b

I'm currently writing this in assembly and then linking it in. However, I wondered if there was a way of getting the compiler to do this for me automatically? e.g. surround code block with 'atomically' and have it go figure it out how to implement the code as an atomic instruction in the underlying processor architecture (or generate an error at compile time if the underlying arch does not support it)?

P.S. I know that gcc has some built-ins (at least for CAS)

http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins

edited tags
Link
Ayman Hourieh
  • 138.5k
  • 23
  • 149
  • 116
Loading
Source Link
bugmenot77
  • 631
  • 3
  • 6
  • 14
Loading