TaskQueue.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* TaskQueue */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01j,13nov01,nel  Change DEQUE to LIST.
  7. 01i,03aug01,dbs  remove usage of Thread class
  8. 01h,13jul01,dbs  fix up condvar/mutex usage
  9. 01g,13jul01,dbs  fix up includes
  10. 01f,28feb00,dbs  fix q-not-full name, add removeAll() method
  11. 01e,21sep99,aim  changed API for activate
  12. 01d,20sep99,aim  added Thread name parameter
  13. 01c,13aug99,aim  added thread parameters
  14. 01b,12aug99,aim  added queue length ctor parameter
  15. 01a,29jul99,aim  created
  16. */
  17. #ifndef __INCTaskQueue_h
  18. #define __INCTaskQueue_h
  19. #include "private/comMisc.h"
  20. #include "private/comStl.h"
  21. template <class T>
  22. class TaskQueue
  23.     {
  24.   public:
  25.     virtual ~TaskQueue ();
  26.     TaskQueue (size_t maxLength = 0);
  27.     virtual int activate
  28. (
  29. const char* threadName = 0,
  30. long priority = 150,
  31. size_t stackSize = 0
  32. );
  33.     
  34.     virtual int open (void* = 0);
  35.     virtual int close ();
  36.     virtual int add (T);
  37.     virtual int remove (T&);
  38.     virtual void* serviceHandler ();
  39.     virtual size_t queueSizeSet (size_t maxLength);
  40.     virtual size_t queueSizeMax () const;
  41.     virtual size_t queueSize () const;
  42.     virtual bool queueIsFull ();
  43.     virtual int queueFullHandler ();
  44.     virtual int removeAll ();
  45.   private:
  46.     STL_LIST(T) m_queue;
  47.     VxMutex         m_queueLock;
  48.     VxCondVar m_queueNotEmpty;
  49.     VxCondVar m_queueNotFull;
  50.     size_t m_queueMaxLength;
  51.     
  52.     static void* threadHandler (void*);
  53.     TaskQueue (const TaskQueue& other);
  54.     TaskQueue& operator= (const TaskQueue& rhs);
  55.     };
  56. #include "TaskQueue.tcc"
  57. #endif // __INCTaskQueue_h