1 #pragma once 2 3 #include <condition_variable> 4 #include <mutex> 5 6 #include "page_queue.h" 7 8 9 10 /* A queue of issued pages. */ 11 12 class PageQueueShared : public PageQueue 13 { 14 protected: 15 Queue _queue; 16 Positions _positions; 17 18 std::mutex _lock; 19 std::condition_variable _counter; 20 21 virtual bool _pop(QueueEntry *entry); 22 23 public: 24 virtual void close(Memory *memory); 25 26 virtual void pop(PageOwner **owner, Flexpage **flexpage); 27 28 virtual void push(PageOwner *owner, Flexpage *flexpage); 29 30 virtual void push_front(PageOwner *owner, Flexpage *flexpage); 31 32 virtual bool remove(PageOwner *owner, Flexpage *flexpage); 33 }; 34 35 // vim: tabstop=4 expandtab shiftwidth=4