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;
        }
    };
  • 相关阅读:
    装饰器
    目录和文件操作
    网络通信过程
    epoll并发
    laravel(包含lumen)框架中的跨域函数实例
    windows使用nginx
    nginx反向代理配置 其实很简单
    前端html页面使用marked点亮你的代码
    PHPWAMP开启SSL,PHPWAMP配置ssl证书
    php接收并存储base64位字符串图片
  • 原文地址:https://www.cnblogs.com/fangkm/p/1504959.html
Copyright © 2011-2022 走看看