My Project
|
Bounded-buffer implementation to manage integer values, supporting multiple readers but only a single writer. More...
#include <stdlib.h>
Go to the source code of this file.
Typedefs | |
typedef struct BNDBUF | BNDBUF |
Functions | |
BNDBUF * | bbCreate (size_t size) |
Creates a new bounded buffer. More... | |
void | bbDestroy (BNDBUF *bb) |
Destroys a bounded buffer. More... | |
void | bbPut (BNDBUF *bb, int value) |
Adds an element to a bounded buffer. More... | |
int | bbGet (BNDBUF *bb) |
Retrieves an element from a bounded buffer. More... | |
Bounded-buffer implementation to manage integer values, supporting multiple readers but only a single writer.
The bbuffer module uses the sem module API to synchronize concurrent access of readers and writers to the bounded buffer.
BNDBUF* bbCreate | ( | size_t | size | ) |
Creates a new bounded buffer.
This function creates a new bounded buffer and all the required helper data structures, including semaphores for synchronization. If an error occurs during the initialization, the implementation frees all resources already allocated by then.
size | The number of integers that can be stored in the bounded buffer. |
NULL
if an error occurred. void bbDestroy | ( | BNDBUF * | bb | ) |
Destroys a bounded buffer.
All resources associated with the bounded buffer are released.
bb | Handle of the bounded buffer that shall be freed. If a NULL pointer is passed, the implementation does nothing. |
int bbGet | ( | BNDBUF * | bb | ) |
Retrieves an element from a bounded buffer.
This function removes an element from a bounded buffer. If the buffer is empty, the function blocks until an element has been added.
bb | Handle of the bounded buffer. |
void bbPut | ( | BNDBUF * | bb, |
int | value | ||
) |
Adds an element to a bounded buffer.
This function adds an element to a bounded buffer. If the buffer is full, the function blocks until an element has been removed from it.
bb | Handle of the bounded buffer. |
value | Value that shall be added to the buffer. |