zoukankan      html  css  js  c++  java
  • ACE_Task笔记

    ACE_Task封装了任务,每个任务都含有一或多个线程,以及一个底层消息队列。各个任务通过这些消息队列进行通信。

    其主要成员如下:

          open():初始化资源

          close():释放资源

          activate():启动线程,可指定线程的数目

          svc():线程的启动位置

          putq():放置消息到任务的消息队列中

          getq():从任务的消息队列中取出消息

          thr_count():返回任务中线程的数目

          last_thread():返回任务中将线程计数器从1降为0的线程的ID

          ...

     PS: 由于ACE_Task对象一般是在堆中创建的,因此必须要进行释放操作.

    class  CTaskDemo : public ACE_Task<ACE_MT_SYNCH>
    {
    public:
        
    virtual int open (void *args = 0)
        {
            activate( THR_NEW_LWP, 
    1 );
            
    return 0;
        }
        
    virtual int close (u_long flags = 0)
        {
            
    if ( ACE_OS::thr_equal ( ACE_Thread::self (),    this->last_thread () ) )
            {
                
    //释放对象
                delete this;
            }

            
    return 0;
        }
        
    virtual int svc (void)
        {
            
    return 0;
        }
    };
  • 相关阅读:
    DENIED Redis is running in protected mode
    Redis接口的调用
    Redis复制
    Redis安全
    Redis持久化
    Redis简单示例
    【T11】提防对等实体的不友好动作
    【T10】记住,TCP__IP不是轮询的
    Python中的with语句
    postgreSQL中timestamp转成date格式
  • 原文地址:https://www.cnblogs.com/fangkm/p/1504959.html
Copyright © 2011-2022 走看看