这几天把c++网络编程随便翻了一遍,发现写ace程序太难了。
比如线程的创建,遇到这样一个问题一直没有解决:
#include <ace/Thread_Manager.h>
#include <ace/Get_Opt.h>
#include <ace/OS.h>
static ACE_THR_FUNC_RETURN taskone(void*)
{
ACE_DEBUG((LM_DEBUG,"Thread:(%t)started Task one! /n"));
ACE_OS::sleep(2);
ACE_DEBUG((LM_DEBUG,"Thread:(%t)finished Task one!/n"));
return 0;
}
static ACE_THR_FUNC_RETURN tasktwo(void*)
{
ACE_DEBUG((LM_DEBUG,"Thread:(%t)started Task two!/n"));
ACE_OS::sleep(1);
ACE_DEBUG((LM_DEBUG,"Thread:(%t)finished Task two!/n"));
return 0;
}
int wmain()
{
ACE_Thread_Manager::instance()->spawn(taskone,0);
ACE_Thread_Manager::instance()->spawn(tasktwo,0);
ACE_OS::sleep(10);
return 0;
}
死活搞不清这段程序为什么会引起程序崩溃。
想一想还是boost的线程比较简单灵活,但是没有ace的这么强大
后来才发现少了ACE::init();
int wmain()
{
ACE::init();
ACE_Thread_Manager::instance()->spawn(taskone,0);
ACE_Thread_Manager::instance()->spawn(tasktwo,0);
ACE_OS::sleep(10);
ACE::fini();
return 0;
}