ACE中创建线程的方法
一、使用线程管理器类 ACE_Thread_Manager 创建线程。
1. 使用 spawn 函数创建。
#include "ace/Thread_Manager.h"
void thread_start(void* arg)
{
printf("Running thread..\n");
}
int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
{
ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)thread_start);
getchar();
return 0;
}
2. 使用 spawn_n 函数创建。
#include "ace/Thread_Manager.h"
void print (void* args)
{
int id = ACE_Thread_Manager::instance()->thr_self();
printf("Thread Id: %d\n", id);
}
int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
{
ACE_Thread_Manager::instance()->spawn_n(
4, (ACE_THR_FUNC) print, 0, THR_JOINABLE | THR_NEW_LWP);
ACE_Thread_Manager::instance()->wait();
getchar();
return 0;
}
二、使用任务类 ACE_Task_Base 创建线程,这种方法不需要像线程管理器那样对线程进行显式细粒度地控制。
#include "ace/Task.h"
class Thread_1 : public ACE_Task_Base
{
public:
virtual int svc( )
{
printf("In child’s thread.\n");
return 0;
}
};
int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
{
Thread_1 th1;
th1.activate(THR_NEW_LWP|THR_JOINABLE);
th1.wait();
getchar();
return 0;
}
参考:http://blog.163.com/cp7618@yeah/blog/static/7023477720101024115547100/