Contents
1. 참고링크 [Bottom] [Top]
Boost Thread Library - http://www.boost.org/libs/thread/doc/
Boost/Thread 2 - Boost::thread 의 기타 라이브러리 정리
2. boost::thread 라이브러리 [Bottom] [Top]
boost::thread 라이브러리에 대한 설명
3. <boost/thread/thread.hpp> 헤더 파일 [Bottom] [Top]
namespace boost { class thread; class thread_group; }
3.1. thread 클래스 [Bottom] [Top]
Thread 객체를 생성하는 클래스로 boost::thread 라이브러리 의
핵심 Thread 클래스. - 생성자
thread( const boost::function0< void >& threadfunc );- 쓰레드 객체를 생성한다.
생성자의 매개변수는 반환값이 void 형이고 매개변수가 없는 함수 또는 함수 객체를 전달한다. 자세한 것은 functionN<> 클래스를 참고한다.
- 멤버 함수
- join() 함수 - 쓰레드가 종료될 때까지 대기한다.
- sleep( xt ) 함수 - xt 로 지정된 시간 만큼 쓰레드를 대기한다.
- yield() 함수 - 쓰레드를 Ready 상태로 전환하고 Context Switching 한다.
3.2. thread_group 클래스 [Bottom] [Top]
Thread 객체를 생성하고 관리해주는 Thread Manager.
- 멤버 함수
- create_thread( threadfunc ) 함수 - 쓰레드를 생성한 후 쓰레드 관리 컨테이너에 추가한다.
- add_thread( thrd ) 함수 - 생성된 쓰레드를 쓰레드 관리 컨테이너에 추가한다.
- remove_thread( thrd ) 함수 - 지정된 쓰레드를 쓰레드 관리 컨테이너에서 삭제한다.
- join_all() 함수 - 모든 쓰레드가 종료될 때까지 대기한다.
- size() 함수 - 현재 쓰레드 관리 컨테이너의 크기 (쓰레드 개수) 를 구한다.
4. <boost/thread/mutex.hpp> 헤더 파일 [Bottom] [Top]
namespace boost { class mutex; class try_mutex; class timed_mutex; }
4.1. mutex 클래스 [Bottom] [Top]
- 쓰레드 동기화를 위한 클래스
- 도우미 클래스 (Helper Class)
scoped_lock 클래스 - mutex 객체를 자동으로 Lock/Unlock 한다.
4.2. try_mutex 클래스 [Bottom] [Top]
쓰레드 동기화 클래스, mutex 클래스 기능을 포함하며 Try Lock 가능한 클래스
- 도우미 클래스 (Helper Class)
scoped_lock 클래스 - try_mutex 객체를 자동으로 Lock/Unlock 한다.
scoped_try_lock 클래스 - try_mutex 객체를 상태 값에 따라 자동으로 TryLock/Unlock 한다.
4.3. timed_mutex 클래스 [Bottom] [Top]
쓰레드 동기화 클래스, try_mutex 클래스 기능을 포함하며 Timed Lock 가능한 클래스
- 도우미 클래스 (Helper Class)
5. <boost/thread/condition.hpp> 헤더 파일 [Bottom] [Top]
namespace boost { class condition; }
5.1. condition 클래스 [Bottom] [Top]
this->notify_XXX() 함수가 호출될 때까지 Locked Mutex 를 Unlock 하고 쓰레드를 Ready 상태로 대기, 호출되면 다시 Locked 상태로 전환, 쓰레드는 실행 상태로 전환하는 객체.
- 처리 과정
Locked Mutex 로 condition 객체의 wait() 또는 timed_wait() 함수 실행
- Locked Mutex 는 Unlock, 쓰레드는 Ready 상태
notify_XXX() 함수 실행
- Unlocked Mutex 는 Lock, 쓰레드는 Run 상태
- 멤버 함수
- notify_one() 함수 - 대기중인 하나의 쓰레드를 실행 상태로 만든다.
- notify_all() 함수 - 대기중인 모든 쓰레드를 실행 상태로 만든다.
wait() 함수 - notify_XXX() 함수가 호출될 때까지 대기한다.
timed_wait() 함수 - notify_XXX() 함수가 호출될 때까지 대기하거나 xt 로 지정된 시간 만큼 대기한다.
6. <boost/thread/once.hpp> 헤더 파일 [Bottom] [Top]
namespace boost { call_once( void (*func)(), once_flag & ); }
6.1. call_once() 함수 [Bottom] [Top]
BOOST_ONCE_INIT 값으로 초기화된 변수를 flag 로 전달하여 다수의 쓰레드가 실행 중일때 지정된 함수를 처음 한번만 실행 시킨다.
주로 초기화 목적으로 사용
7. 참고사항 [Bottom] [Top]
7.1. functionN<> 클래스 [Bottom] [Top]
클래스 정리
7.2. noncopyable 클래스 [Bottom] [Top]
noncopyable 클래스를 상속 받은 클래스는 객체를 복사할 수 없다.
객체 복사 방지를 위한 최상위 클래스. 복사 생성자 및 할당연산자 (operator=()) 를 private 으로 선언하여 객체 복사를 방지한다.
