ACE消息队列
一个线程池里能否管理多个消息队列?如果可以,如何管理?请大侠指教。 当然可以了。消息队列可以有很多个,根据你需要,分别推送到不同的队列中。 可以直接使用ACE_Message_Queue;如果是ACE_Task,那么需要在启动的时候指定线程的个数; 可以的,基于ACE_Task,不要基于ACE_Task_Base(没有队列缓存)
/// 线程池实现类
class CLASS_DECLSPEC ThreadPool : public ACE_Task<ACE_MT_SYNCH>
{
friend class WorkerThread;
public:
ThreadPool(size_t thread_num, size_t thread_idle_time = 1, const std::string& logger_file = "");
~ThreadPool(void);
virtual int svc(void);
int SubmitTask(const TaskBase* task);
int SubmitTask(int (*pFunc)(void *), void *pPara = NULL);
void JoinAll();
int CreateWorkThreads(size_t num = 0);
int DestroyWorkThreads(size_t num = 0);
private:
bool m_bDestroyed;
const size_t m_iSize;
ACE_Time_Value m_threadIdleTime; // idle thread wait time(second).
ACE_Thread_Mutex m_workersLock;
ACE_Condition_Thread_Mutex m_workersCondition;
//ACE_Thread_Semaphore m_destroyedSem;
ACE_Unbounded_Queue<WorkerThread *> m_workerThreads;
};
页:
[1]