tristanable/source/tristanable/queue.d

53 lines
878 B
D
Raw Normal View History

2020-09-29 10:57:25 +01:00
module tristanable.queue;
import libsnooze;
import core.sync.mutex : Mutex;
2023-02-26 19:55:13 +00:00
public class Queue
2020-09-29 10:57:25 +01:00
{
/**
* Everytime a thread calls `.dequeue()` on this queue
*
*/
private Event event;
private QueueItem queue;
private Mutex queueLock;
2023-02-26 19:55:13 +00:00
private this()
{
/* Initialize the queue lock */
this.queueLock = new Mutex();
/* Initialize the event */
this.event = new Event();
}
2020-09-29 10:57:25 +01:00
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();
2023-02-26 19:55:13 +00:00
}
2020-09-29 10:57:25 +01:00
2023-02-26 19:55:13 +00:00
public static Queue newQueue(ulong queueID)
{
Queue queue;
2020-09-29 10:57:25 +01:00
2023-02-26 19:55:13 +00:00
// TODO: Implement me
2020-09-29 10:57:25 +01:00
2023-02-26 19:55:13 +00:00
return queue;
}
}
public class QueueItem
{
2020-09-29 10:57:25 +01:00
}