关闭

ACE_Thread_Manager

3534人阅读 评论(6) 收藏 举报

ace是对若干东西的封装,所以从看问题本质的角度来说,了解ACE先要熟悉被它封装的东西。thread管理也是如此。

开辟一个线程在不同的系统上有不同的方法,而且这个线程的代价也不尽一样,但是肯定有些东西是共性的,就譬如ACE做thead_manager的接口的时候定义的那些参数一样,往常复杂不易使用的步骤组合被ACE加以封装。

其实直到目前为止我也一直认为thread manager是为了ace_task服务了。

关于这个类本身,我觉得用代码更容易把问题表达清楚一些:

#include <ACE/Thread_Manager.h>
#include 
<ace/ACE.h>
#pragma comment(lib,"aced.lib")

ACE_THR_FUNC_RETURN    svc(
void* arg)
{
    
int    cnt    = 1000;
    
for(int i = 0;i < cnt;++i)
    
{
        cout
<<"now :"<<i<<endl;
    }

    
return    NULL;
}



int _tmain(int argc, _TCHAR* argv[])
{
    ACE::init();

    ACE_Thread_Manager::instance()
->spawn(svc,NULL);
    ACE_Thread_Manager::instance()
->wait();
    ACE::fini();
    
return 0;
}

 我在这里帖了很多东西。因为有些东西没有多少人提起,却很重要。

还记得使用的时候要加init和fini吧,如果你认为那只是封装了wsastartup和wsaclearup,那就错了。上边的代码,如果你没有初始化,一样会出问题,而且不给你任何提示,除了系统的报错对话框,而你不知道问题出在哪儿。

帖这段完整代码,提示在使用ace的时候要记得它的特有初始化。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:181506次
    • 积分:2941
    • 等级:
    • 排名:第12756名
    • 原创:113篇
    • 转载:3篇
    • 译文:0篇
    • 评论:28条
    文章分类