1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/pages/page_queue_shared.h Sun Mar 28 23:16:12 2021 +0200
1.3 @@ -0,0 +1,35 @@
1.4 +#pragma once
1.5 +
1.6 +#include <condition_variable>
1.7 +#include <mutex>
1.8 +
1.9 +#include "page_queue.h"
1.10 +
1.11 +
1.12 +
1.13 +/* A queue of issued pages. */
1.14 +
1.15 +class PageQueueShared : public PageQueue
1.16 +{
1.17 +protected:
1.18 + Queue _queue;
1.19 + Positions _positions;
1.20 +
1.21 + std::mutex _lock;
1.22 + std::condition_variable _counter;
1.23 +
1.24 + virtual bool _pop(QueueEntry *entry);
1.25 +
1.26 +public:
1.27 + virtual void close(Memory *memory);
1.28 +
1.29 + virtual void pop(PageOwner **owner, Flexpage **flexpage);
1.30 +
1.31 + virtual void push(PageOwner *owner, Flexpage *flexpage);
1.32 +
1.33 + virtual void push_front(PageOwner *owner, Flexpage *flexpage);
1.34 +
1.35 + virtual bool remove(PageOwner *owner, Flexpage *flexpage);
1.36 +};
1.37 +
1.38 +// vim: tabstop=4 expandtab shiftwidth=4