118 bool wait(pthread_cond_t*);
121 p = (p + 1) % blockCount;
129 struct timespec timeout;
132 int code = pthread_cond_timedwait(cond, &
mutex, &timeout);
133 if (code == ETIMEDOUT) {
136 DBGTHRD(<<
"Wait aborted: finished flag is set");
147 DBGTHRD(<<
"Waiting for condition notFull ...");
149 DBGTHRD(<<
"Produce request failed!");
153 DBGTHRD(<<
"Producer request: block " <<
end);
161 DBGTHRD(<<
"Producer release, new end is " <<
end);
164 DBGTHRD(<<
"Signal buffer not empty");
172 DBGTHRD(<<
"Waiting for condition notEmpty ...");
174 DBGTHRD(<<
"Consume request failed!");
189 DBGTHRD(<<
"Signal buffer not full");
209 #endif // __RINGBUFFER_H pthread_cond_t notEmpty
Definition: ringbuffer.h:114
Definition: ringbuffer.h:38
bool wait(pthread_cond_t *)
Definition: ringbuffer.h:128
bool bparity
Definition: ringbuffer.h:102
void set_finished(bool f=true)
Definition: ringbuffer.h:64
~AsyncRingBuffer()
Definition: ringbuffer.h:88
size_t getBlockCount()
Definition: ringbuffer.h:60
int end
Definition: ringbuffer.h:100
#define DO_PTHREAD(x)
Definition: w_pthread.h:74
bool isFull()
Definition: ringbuffer.h:48
#define DBGTHRD(arg)
Definition: w_debug.h:297
AsyncRingBuffer(size_t bsize, size_t bcount)
Definition: ringbuffer.h:74
bool isFinished()
Definition: ringbuffer.h:194
char * consumerRequest()
Definition: ringbuffer.h:169
void producerRelease()
Definition: ringbuffer.h:157
pthread_cond_t notFull
Definition: ringbuffer.h:116
bool eparity
Definition: ringbuffer.h:104
char * producerRequest()
Definition: ringbuffer.h:144
void consumerRelease()
Definition: ringbuffer.h:182
const size_t blockSize
Definition: ringbuffer.h:108
void increment(int &p, bool &parity)
Definition: ringbuffer.h:120
bool finished
Definition: ringbuffer.h:106
const size_t blockCount
Definition: ringbuffer.h:110
static void timeout_to_timespec(int timeout_ms, struct timespec &when)
Definition: smthread.cpp:335
#define DO_PTHREAD_TIMED(x)
Definition: w_pthread.h:87
int begin
Definition: ringbuffer.h:98
bool isEmpty()
Definition: ringbuffer.h:52
size_t getBlockSize()
Definition: ringbuffer.h:56
pthread_mutex_t mutex
Definition: ringbuffer.h:112
#define CRITICAL_SECTION(name, lock)
Definition: critical_section.h:75
bool * get_finished()
Definition: ringbuffer.h:68
char * buf
Definition: ringbuffer.h:96