12 #ifndef SST_CORE_INTERPROCESS_CIRCULARBUFFER_H    13 #define SST_CORE_INTERPROCESS_CIRCULARBUFFER_H    19 namespace Interprocess {
    33     bool setBufferSize(
const size_t bufferSize)
    35         if ( buffSize != 0 ) {
    36             fprintf(stderr, 
"Already specified size for buffer\n");
    40         buffSize = bufferSize;
    52             if ( readIndex != writeIndex ) {
    53                 const T result = buffer[readIndex];
    54                 readIndex      = (readIndex + 1) % buffSize;
    61             bufferMutex.processorPause(loop_counter++);
    65     bool readNB(T* result)
    67         if ( bufferMutex.try_lock() ) {
    68             if ( readIndex != writeIndex ) {
    69                 *result   = buffer[readIndex];
    70                 readIndex = (readIndex + 1) % buffSize;
    82     void write(
const T& v)
    89             if ( ((writeIndex + 1) % buffSize) != readIndex ) {
    90                 buffer[writeIndex] = v;
    91                 writeIndex         = (writeIndex + 1) % buffSize;
    99             bufferMutex.processorPause(loop_counter++);
   108         readIndex = writeIndex;
   109         __sync_synchronize();
   110         bufferMutex.unlock();
   125 #endif // SST_CORE_INTERPROCESS_CIRCULARBUFFER_H 
Definition: circularBuffer.h:22
Definition: sstmutex.h:25