tristanable/source/tristanable/queue.d

53 lines
878 B
D

module tristanable.queue;
import libsnooze;
import core.sync.mutex : Mutex;
public class Queue
{
/**
* Everytime a thread calls `.dequeue()` on this queue
*
*/
private Event event;
private QueueItem queue;
private Mutex queueLock;
private this()
{
/* Initialize the queue lock */
this.queueLock = new Mutex();
/* Initialize the event */
this.event = new Event();
}
public void dequeue()
{
// TODO: Make us wait on the event (optional with a time-out)
// TODO: Lock queue
queueLock.lock();
// TODO: Get item off queue
// TODO: Unlock queue
queueLock.unlock();
}
public static Queue newQueue(ulong queueID)
{
Queue queue;
// TODO: Implement me
return queue;
}
}
public class QueueItem
{
}