/src/rt/sync/sync.h
http://github.com/jruderman/rust · C Header · 44 lines · 35 code · 8 blank · 1 comment · 0 complexity · 6da6e4ba3b2d83ea1bf3218743b76b8e MD5 · raw file
- // -*- c++ -*-
- #ifndef SYNC_H
- #define SYNC_H
- class sync {
- public:
- template <class T>
- static bool compare_and_swap(T *address,
- T oldValue, T newValue) {
- return __sync_bool_compare_and_swap(address, oldValue, newValue);
- }
- template <class T>
- static T increment(T *address) {
- return __sync_add_and_fetch(address, 1);
- }
- template <class T>
- static T decrement(T *address) {
- return __sync_sub_and_fetch(address, 1);
- }
- template <class T>
- static T increment(T &address) {
- return __sync_add_and_fetch(&address, 1);
- }
- template <class T>
- static T decrement(T &address) {
- return __sync_sub_and_fetch(&address, 1);
- }
- template <class T>
- static T read(T *address) {
- return __sync_add_and_fetch(address, 0);
- }
- template <class T>
- static T read(T &address) {
- return __sync_add_and_fetch(&address, 0);
- }
- };
- #endif /* SYNC_H */