#include <SingleProducerConsumer.h>
Public Member Functions | |
SingleProducerConsumerType * | WriteLock (void) |
void | CancelWriteLock (SingleProducerConsumerType *cancelToLocation) |
void | WriteUnlock (void) |
Call when you are done writing to a block of memory returned by WriteLock(). | |
SingleProducerConsumerType * | ReadLock (void) |
void | CancelReadLock (SingleProducerConsumerType *cancelToLocation) |
param[in] Which ReadLock() to cancel. | |
void | ReadUnlock (void) |
void | Clear (void) |
Clear is not thread-safe and none of the lock or unlock functions should be called while it is running. | |
int | Size (void) const |
bool | CheckReadUnlockOrder (const SingleProducerConsumerType *data) const |
bool | ReadIsLocked (void) const |
void DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::CancelWriteLock | ( | SingleProducerConsumerType * | cancelToLocation | ) | [inline] |
Call if you don't want to write to a block of data from WriteLock() after all. Cancelling locks cancels all locks back up to the data passed. So if you lock twice and cancel using the first lock, the second lock is ignored
[in] | cancelToLocation | Which WriteLock() to cancel. |
bool DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::CheckReadUnlockOrder | ( | const SingleProducerConsumerType * | data | ) | const [inline] |
Make sure that the pointer we done reading for the call to ReadUnlock is the right pointer. param[in] A previous pointer returned by ReadLock()
bool DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::ReadIsLocked | ( | void | ) | const [inline] |
Returns if ReadUnlock was called before ReadLock
SingleProducerConsumerType * DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::ReadLock | ( | void | ) | [inline] |
ReadLock must be immediately followed by ReadUnlock. These two functions must be called in the same thread.
0 | No data is availble to read | |
Non-zero | The data previously written to, in another thread, by WriteLock followed by WriteUnlock. |
void DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::ReadUnlock | ( | void | ) | [inline] |
Signals that we are done reading the the data from the least recent call of ReadLock. At this point that pointer is no longer valid, and should no longer be read.
int DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::Size | ( | void | ) | const [inline] |
This function will estimate how many elements are waiting to be read. It's threadsafe enough that the value returned is stable, but not threadsafe enough to give accurate results.
SingleProducerConsumerType * DataStructures::SingleProducerConsumer< SingleProducerConsumerType >::WriteLock | ( | void | ) | [inline] |
WriteLock must be immediately followed by WriteUnlock. These two functions must be called in the same thread.