文本纠错项目一些问题

本文讨论了线程启动问题,特别是线程池中的工作线程和缓存线程。重点阐述了如何通过线程对象指针传递缓存和日志系统对象,以及在启动线程时的初始化工作。购物篮问题作为参照,帮助理解多态和虚函数的应用。同时,介绍了任务的打包封装,将查询词、socket地址和文本纠错处理类的引用整合成任务类对象,放入工作队列进行处理。
摘要由CSDN通过智能技术生成

线程启动问题

  • thread thread_run头文件
namespace THREAD
{
    class CThread_RUN
    {
        public:
            virtual void run()=0;
            virtual void set_cache(hash_record* m_cache)=0;
            virtual void set_log(LOG_SYSTEM::Log_system* log)=0;
    };
    class CThread
    {
        public:
            CThread():m_cache(HASH_BASE){}
            CThread(LOG_SYSTEM::Log_system* log):m_log(log){}
            void start(CThread_RUN* arg);
            hash_record* get_record();
            void set_log(LOG_SYSTEM::Log_system* log);
        private:
            pthread_t m_tid;
            hash_record m_cache;
            LOG_SYSTEM::Log_system* m_log;
            static void* thread_func(void* obj);
    };
}
  • thread thread_run函数定义
namespace THREAD
{
    void CThread::start(CThread_RUN* arg)
    {
        arg->set_log(m_log);
        arg->set_cache(&m_cache);
        pthread_create(&m_tid,NULL,thread_func,(void*)arg);
    }
    hash_record* CThread::get_record()
    {
        return &m_cache;
    }
    void CThread::set_log(LOG_SYSTEM::Log_system* log)
    {
        m_log=log;
    }
    void* CThread::thread_func(void* obj)
    {
        pthread_detach(pthread_self());
        CThread_RUN* obj1=(CThread_RUN*)obj;
        obj1->run();//这个地方用到了多态,传入的是CRun的子类,执行的是子类的run函数。
    }
}
  • thread thread_run关系图
    ![Alt text](./屏幕快照 2015-04-10 下午3.42.26.png)

缓存和日志系统对象指针传参问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值