Boost Library를 사용하기 위래 조금씩 공부를 하고 있다.
Boost::thread란?
boost::thread 라이브러리는 이식성, 안전성, 유연성을 고려하여, 최대한 효율적으로 구현된 라이브러리. boost::thread 라이브러리에는 suspend / resume 과 같은 기능 및 스레드별 스택 사이즈를 설정하는 기능을 제공하지 않음
Threading function 인자가 없을 경우
Threading function 인자가 있을 경우
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 한다.
'MISCELLANEOUSNESS' 카테고리의 다른 글
Warning] C4819 파일 저장 형식에 따른 VS의 버그 (0) | 2009.12.24 |
---|---|
MFC] CTreeCtrl의 트리 탐색 방법 (2) | 2009.12.21 |
ERROR] C2719 D3DXMATRIXA16 함수 매개 변수로 주었을 때의 에러 해결 방법 (0) | 2009.12.20 |