Contents
흠
ACE_Thread_Manager 가 뭐하는건지 모르는 상태에서 예제를 보고 만들어본 코드이다. 돌아가는 꼴이 이상하여 문서를 봤더니, thread 를 그룹 단위로 관리해주는 좋은 놈이더라.1 우선 만든 코드부터 적어둔다.
#include "ace/OS.h" #include "ace/Log_Msg.h" #include "ace/Thread_Manager.h" void* sleeper(void* arg) { ACE_DEBUG((LM_INFO, "[%t] thread spawnded\n")); ACE_OS::sleep(10); ACE_DEBUG((LM_INFO, "[%t] thread return\n")); return 0; } int main(int argc, char* argv[]) { ACE_Thread_Manager& tm = *ACE_Thread_Manager::instance(); for( int i = 0; i < 5; ++i ) if(tm.spawn((ACE_THR_FUNC)sleeper, 0) == -1) ACE_ERROR_RETURN((LM_ERROR, "thread create failed"), -1); if( tm.wait() == -1 ) ACE_ERROR_RETURN((LM_ERROR, "thread wait failed"), -1); ACE_DEBUG((LM_INFO, "ok\n")); return 0; }
문서를 좀 읽어보니 위 예제는 릭이 있을것 같은데... 저 소스는 그냥 기념삼아 두고, 후에 참고하면 안되겠다.
1 boost::thread_group 도 thread 를 그룹단위로 관리해준다. 물론 ACE 보다 기능에선 뒤지지만 충분히 쓸만하다.
