Files
FastSync/src/shared/queue.h
T
TapTap d64666d456
CI / lint (pull_request) Failing after 3s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
fix: close remaining PR 208 security gaps
2026-08-09 11:52:15 +02:00

32 lines
1.1 KiB
C

#ifndef QUEUE_H
#define QUEUE_H
#include <stdbool.h>
#include <stdatomic.h>
#include <threads.h>
typedef struct Queue {
void** items;
int front;
int rear;
int size;
int capacity;
void (*item_destroyer)(void* item);
} Queue;
Queue* queue_create(int capacity, void (*destroyer)(void* item));
void queue_destroy(Queue* queue);
bool queue_is_empty(const Queue* queue);
bool queue_is_full(const Queue* queue);
bool queue_enqueue(Queue* queue, void* item);
bool queue_enqueue_multithreaded(Queue* queue, void* item, mtx_t* mutex, cnd_t* condition_not_empty,
cnd_t* condition_not_full);
bool queue_enqueue_multithreaded_cancel(Queue* queue, void* item, mtx_t* mutex,
cnd_t* condition_not_empty, cnd_t* condition_not_full,
const atomic_bool* cancelled);
void* queue_dequeue(Queue* queue);
void* queue_dequeue_multithreaded(Queue* queue, mtx_t* mutex, cnd_t* condition_not_empty,
cnd_t* condition_not_full, const bool* other_thread_done);
#endif