ACE中创建线程的方法

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/

你可能感兴趣的:(ACE中创建线程的方法)