LinkedQueue.h 696 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _LINKEDQUEUE_H_
  2. #define _LINKEDQUEUE_H_
  3. #include <windows.h>
  4. class LinkedQueue;
  5. class QueueElement;
  6. class QueueElement {
  7. public:
  8. QueueElement * next;
  9. QueueElement * prev;
  10. void * elem;
  11. QueueElement(void * e) { next=NULL; prev=NULL; elem=e; }
  12. };
  13. class LinkedQueue {
  14. protected:
  15. QueueElement * head;
  16. QueueElement * tail;
  17. QueueElement * bm;
  18. int bmpos;
  19. int size;
  20. QueueElement * Find(int pos);
  21. CRITICAL_SECTION cs;
  22. public:
  23. LinkedQueue();
  24. ~LinkedQueue();
  25. int GetSize();
  26. void Offer(void * e);
  27. void *Poll();
  28. void *Peek();
  29. void *Get(int pos);
  30. void Set(int pos, void * val);
  31. void *Del(int pos);
  32. void lock();
  33. void unlock();
  34. };
  35. #endif //_LINKEDQUEUE_H_