27 explicit CircularBuffer(
size_t mSize = 0)
34 bool setBufferSize(
const size_t bufferSize)
36 if ( buffSize != 0 ) {
37 fprintf(stderr,
"Already specified size for buffer\n");
41 buffSize = bufferSize;
53 if ( readIndex != writeIndex ) {
54 const T result = buffer[readIndex];
55 readIndex = (readIndex + 1) % buffSize;
62 bufferMutex.processorPause(loop_counter++);
66 bool readNB(T* result)
68 if ( bufferMutex.try_lock() ) {
69 if ( readIndex != writeIndex ) {
70 *result = buffer[readIndex];
71 readIndex = (readIndex + 1) % buffSize;
83 void write(
const T& v)
90 if ( ((writeIndex + 1) % buffSize) != readIndex ) {
91 buffer[writeIndex] = v;
92 writeIndex = (writeIndex + 1) % buffSize;
100 bufferMutex.processorPause(loop_counter++);
109 readIndex = writeIndex;
110 __sync_synchronize();
111 bufferMutex.unlock();