galaxy666 发表于 2010-8-12 09:53:35

求教:ACE_Thread_Manager创建线程引起程序崩溃

#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;
}

ACE_OS::sleep(10);//加上这句话之后程序就会崩溃
在这里用getchar 或者ACE_Thread_Manager::instance()->join也会引起程序崩溃?

我是ace初学者,请教各位大侠这是怎么回事???

galaxy666 发表于 2010-8-12 09:58:21


如上图,程序会崩溃

在ace5.5和ace8.1上都试过

winston 发表于 2010-8-12 11:00:08

感觉没正确初始化,要调用ACE::init,另外涉及线程的,退出要有同步机制。

dwh0403 发表于 2010-8-12 13:38:41

int wmain()定义成 int ACE_TAMIN(int argc, char *argv[])格式,使用ACE_Thread_Manager::instance()->wait() 来等待,一般不会有问题的

galaxy666 发表于 2010-8-12 16:34:47

回复 3# winston

发现问题了就是没有初始化,初始化后一切正常
页: [1]
查看完整版本: 求教:ACE_Thread_Manager创建线程引起程序崩溃