File tree 3 files changed +6
-66
lines changed
3 files changed +6
-66
lines changed Original file line number Diff line number Diff line change @@ -238,7 +238,8 @@ RingBuffer<T>::resized(int newSize) const
238
238
{
239
239
RingBuffer<T> *newBuffer = new RingBuffer<T>(newSize);
240
240
241
- MBARRIER ();
241
+ std::atomic_thread_fence (std::memory_order_seq_cst);
242
+
242
243
int w = m_writer;
243
244
int r = m_reader;
244
245
@@ -464,7 +465,8 @@ RingBuffer<T>::write(const S *const R__ source, int n)
464
465
w += n;
465
466
while (w >= m_size) w -= m_size;
466
467
467
- MBARRIER ();
468
+ std::atomic_thread_fence (std::memory_order_seq_cst);
469
+
468
470
m_writer = w;
469
471
470
472
return n;
@@ -498,7 +500,8 @@ RingBuffer<T>::zero(int n)
498
500
w += n;
499
501
while (w >= m_size) w -= m_size;
500
502
501
- MBARRIER ();
503
+ std::atomic_thread_fence (std::memory_order_seq_cst);
504
+
502
505
m_writer = w;
503
506
504
507
return n;
Original file line number Diff line number Diff line change @@ -166,31 +166,6 @@ void gettimeofday(struct timeval *tv, void * /* tz */)
166
166
167
167
#endif
168
168
169
- #ifdef _WIN32
170
- void system_memorybarrier ()
171
- {
172
- #ifdef _MSC_VER
173
- MemoryBarrier ();
174
- #else /* (mingw) */
175
- LONG Barrier = 0 ;
176
- __asm__ __volatile__ (" xchgl %%eax,%0 "
177
- : " =r" (Barrier));
178
- #endif
179
- }
180
- #else /* !_WIN32 */
181
- #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
182
- // Not required
183
- #else
184
- #include < pthread.h>
185
- void system_memorybarrier ()
186
- {
187
- pthread_mutex_t dummy = PTHREAD_MUTEX_INITIALIZER;
188
- pthread_mutex_lock (&dummy);
189
- pthread_mutex_unlock (&dummy);
190
- }
191
- #endif
192
- #endif
193
-
194
169
}
195
170
196
171
Original file line number Diff line number Diff line change @@ -117,43 +117,5 @@ void gettimeofday(struct timeval *p, void *tz);
117
117
118
118
} // end namespace
119
119
120
- // The following should be functions in the RubberBand namespace, really
121
-
122
- #ifdef _WIN32
123
-
124
- namespace RubberBand {
125
- extern void system_memorybarrier ();
126
- }
127
- #define MBARRIER () RubberBand::system_memorybarrier()
128
-
129
- #else // !_WIN32
130
-
131
- #include < stdio.h>
132
-
133
- #ifdef __APPLE__
134
- # if defined __MAC_10_12
135
- # define MBARRIER () __sync_synchronize()
136
- # else
137
- # include < libkern/OSAtomic.h>
138
- # define MBARRIER () OSMemoryBarrier()
139
- # endif
140
- #else
141
- # if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
142
- # define MBARRIER () __sync_synchronize()
143
- # else
144
- namespace RubberBand {
145
- extern void system_memorybarrier ();
146
- }
147
- # define MBARRIER () ::RubberBand::system_memorybarrier()
148
- # endif
149
- #endif
150
-
151
- #endif // !_WIN32
152
-
153
- #ifdef NO_THREADING
154
- # undef MBARRIER
155
- # define MBARRIER ()
156
- #endif // NO_THREADING
157
-
158
120
#endif
159
121
You can’t perform that action at this time.
0 commit comments