17 INLINE
void AtomicAdjustPosixImpl::
18 inc(TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
19 pthread_mutex_lock(&_mutex);
21 pthread_mutex_unlock(&_mutex);
28 INLINE
bool AtomicAdjustPosixImpl::
29 dec(TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
30 pthread_mutex_lock(&_mutex);
31 Integer result = --var;
32 pthread_mutex_unlock(&_mutex);
40 INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
41 add(TVOLATILE AtomicAdjustPosixImpl::Integer &var,
42 AtomicAdjustPosixImpl::Integer delta) {
43 pthread_mutex_lock(&_mutex);
44 Integer new_value = var + delta;
46 pthread_mutex_unlock(&_mutex);
53 INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
54 set(TVOLATILE AtomicAdjustPosixImpl::Integer &var,
55 AtomicAdjustPosixImpl::Integer new_value) {
56 pthread_mutex_lock(&_mutex);
57 Integer orig_value = var;
59 pthread_mutex_unlock(&_mutex);
69 INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
70 get(
const TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
71 pthread_mutex_lock(&_mutex);
72 Integer orig_value = var;
73 pthread_mutex_unlock(&_mutex);
80 INLINE AtomicAdjustPosixImpl::Pointer AtomicAdjustPosixImpl::
81 set_ptr(TVOLATILE AtomicAdjustPosixImpl::Pointer &var,
82 AtomicAdjustPosixImpl::Pointer new_value) {
83 pthread_mutex_lock(&_mutex);
84 Pointer orig_value = var;
86 pthread_mutex_unlock(&_mutex);
96 INLINE AtomicAdjustPosixImpl::Pointer AtomicAdjustPosixImpl::
97 get_ptr(
const TVOLATILE AtomicAdjustPosixImpl::Pointer &var) {
98 pthread_mutex_lock(&_mutex);
99 Pointer orig_value = var;
100 pthread_mutex_unlock(&_mutex);
117 INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
118 compare_and_exchange(TVOLATILE AtomicAdjustPosixImpl::Integer &mem,
119 AtomicAdjustPosixImpl::Integer old_value,
120 AtomicAdjustPosixImpl::Integer new_value) {
121 pthread_mutex_lock(&_mutex);
122 Integer orig_value = mem;
123 if (mem == old_value) {
126 pthread_mutex_unlock(&_mutex);
135 INLINE AtomicAdjustPosixImpl::Pointer AtomicAdjustPosixImpl::
136 compare_and_exchange_ptr(TVOLATILE AtomicAdjustPosixImpl::Pointer &mem,
137 AtomicAdjustPosixImpl::Pointer old_value,
138 AtomicAdjustPosixImpl::Pointer new_value) {
139 pthread_mutex_lock(&_mutex);
140 Pointer orig_value = mem;
141 if (mem == old_value) {
144 pthread_mutex_unlock(&_mutex);