smilemale 发表于 2011-5-13 20:43:43

ACE消息队列

一个线程池里能否管理多个消息队列?如果可以,如何管理?请大侠指教。

winston 发表于 2011-5-14 00:13:50

当然可以了。消息队列可以有很多个,根据你需要,分别推送到不同的队列中。

ztenv 发表于 2011-7-19 13:20:44

可以直接使用ACE_Message_Queue;
如果是ACE_Task,那么需要在启动的时候指定线程的个数;

yubobarye 发表于 2013-9-16 13:04:01

可以的,基于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]
查看完整版本: ACE消息队列