找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 15250|回复: 3

ACE消息队列

[复制链接]
发表于 2011-5-13 20:43:43 | 显示全部楼层 |阅读模式
一个线程池里能否管理多个消息队列?如果可以,如何管理?请大侠指教。
发表于 2011-5-14 00:13:50 | 显示全部楼层
当然可以了。消息队列可以有很多个,根据你需要,分别推送到不同的队列中。
发表于 2011-7-19 13:20:44 | 显示全部楼层
可以直接使用ACE_Message_Queue;
如果是ACE_Task,那么需要在启动的时候指定线程的个数;
发表于 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;
};
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 11:03 , Processed in 0.026510 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表