본문 바로가기
  • fishing...
  • eating...
MISCELLANEOUSNESS

Boost Trhead 사용법

by 회색뿔 2009. 12. 23.



Boost Library를 사용하기 위래 조금씩 공부를 하고 있다. 
 
Boost::thread란? 
boost::thread 라이브러리는 이식성, 안전성, 유연성을 고려하여, 최대한 효율적으로 구현된 라이브러리. boost::thread 라이브러리에는 suspend / resume 과 같은 기능 및 스레드별 스택 사이즈를 설정하는 기능을 제공하지 않음


Threading function 인자가 없을 경우
#include
#include

using namespace std;
using namespace boost;

void Thread_func_a()
{
        cout << 'a';
}

void Thread_func_b() // 100만번 'b'를 출력
{
        cout << 'b';
}

int main()
{
    thread ta( &Thread_func_a ); // Thread_func_a 스레드를 생성과 동시에 실행 
    thread tb( &Thread_func_b ); // Thread_func_b 스레드를 생성과 동시에 실행 
    //ta.join();
    //tb.join(); 
    return 0;
}

join() 

쓰레드함수가 종료되어 리턴 될 동안 대기한다.
다시말하면, 쓰레드와 메인이 동시에 돌고 있어야 할때는 join()을 사용하면 안된다.


t.timed_join(boost::posix_time::seconds(1));      // 1초 동안 쓰레드 종료 대기
t.join();                                                          // 쓰레드 종료 대기 (무한)


Threading function 인자가 있을 경우
void Thread_func_c( char* sz )
{
        cout << sz;
}

int main()
{
    ...
    thread ta( Boost::bind( &Thread_func_c, "Hello World" ) ); // Thread_func_c 스레드를 생성과 동시에 실행 
    //thread ta( &Thread_func_c, "Hello World" ); // Thread_func_c 스레드를 생성과 동시에 실행 
    ...
}


sleep( xt ) 함수 - xt 로 지정된 시간 만큼 쓰레드를 대기한다.
yield() 함수 - 쓰레드를 Ready 상태로 전환하고 Context Switching 한다.


Boost::Tread 공식사이트