File ThreadSafeQueue.h

File List > engine > include > ThreadSafeQueue.h

Go to the documentation of this file

#ifndef THREADSAFE_QUEUE_H
#define THREADSAFE_QUEUE_H

#include "IntTypes.h"
#include "Thread.h"
#include <stdbool.h>


typedef void(*OnTSQueueWrapAroundFn)(void* pItemToBeLost);

struct ThreadSafeQueue
{
    u8* data;
    u32 itemSize;
    u32 queueSize;
    u32 queueCurrentLength;
    u8* queueHead;
    u8* queueTail;
    CrossPlatformMutex mutex;
    OnTSQueueWrapAroundFn onWrap;
};

void TSQ_Init(struct ThreadSafeQueue* pQueue, u32 itemSize, u32 queueSizeItems, OnTSQueueWrapAroundFn wrapAroundCallback);

void TSQ_Enqueue(struct ThreadSafeQueue* pQueue, const void* pIn);

bool TSQ_Dequeue(struct ThreadSafeQueue* pQueue, void* pOut);

#endif