简化版的LF线程池(领导者与跟随者模式)

我使劲看了ACE中的LF示例,还是没有看出为什么作者要那么写,我把我简化版的LP线程贴出来,望大家批评批评。
void  SampleLFTaskPool::start( const   char *  name, int  count, int  high)
{
    strncpy(threadName,name,
19);
    
this->msg_queue()->high_water_mark(high);
    
this->activate(THR_NEW_LWP|THR_JOINABLE,count);
}

void  SampleLFTaskPool::svc()
{
    
while(!bExit_)
    
{
        ACE_Message_Block
* mb=0;

        
{
            ACE_GUARD(ACE_Thread_Mutex,mon,lock_);
            
if(getq(mb) <-1)
            
{
                ACE_DEBUG((LM_ERROR,ACE_TEXT(
"%s Exited:%p"),threadName));
                
break;
            }

        }

        pro(mb);
    }

}

void  SampleLFTaskPool::stop()
{
    bExit_ 
= true;
}
头文件
class  SampleLFTaskPool: public  ACE_Task < ACE_MT_SYNCH >
    
{
    
public:
        SampleLFTaskPool(
void);
        
~SampleLFTaskPool(void);
    
public:
        
virtual int start(const char* name,int count,int high);
        
virtual int svc (void);
        
virtual void pro(ACE_Message_Block* mb);
        
virtual int stop();
        
        
char                    threadName[20];
        ACE_Thread_Mutex        lock_;                        
bool                    bExit_;                // 是否退出
    }
;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值