링크 : http://tingcobell.tistory.com/295
최종 목표는 boost::asio을 네트워크 라이브러리에 붙이는 것이 최종 목표입니다. 하지만 기본적인 내용을 알면 좋겠다라는 생각에 부가적인 기능을 공부한 후, asio을 사용해서 네트워크 구성을 해보려고 합니다.
#include <iostream>
#include <boost/thread.hpp>
class BoostTest
{
public:
BoostTest() : stopCount( 0 )
{
}
~BoostTest()
{
}
public:
void start( int _thread)
{
threadStop = true;
boostThread = boost::thread(&BoostTest::processQueue, this, _thread );
}
void join()
{
boostThread.join();
}
void stop()
{
threadStop = false;
}
void processQueue( unsigned _timer )
{
float ms = _timer * 1e3;
//boost::posix_time::microseconds timer(ms);
boost::posix_time::milliseconds timer( ms );
std::cout << "BoostThread: started, for ms : " << ms << std::endl;
while( threadStop )
{
std::cout << " stop Count : " << stopCount << "\t thread Id " << boost::this_thread::get_id() << std::endl;
if( stopCount == 10 )
{
this->stop();
}
stopCount++;
boost::this_thread::sleep( timer );
}
}
private:
boost::thread boostThread;
int stopCount;
volatile bool threadStop;
};
int main()
{
std::cout << "Debug: thread test startup!" << std::endl;
BoostTest test;
test.start( 3 );
std::cout << "Debug: waiting for thread" << std::endl;
test.join();
std::cout << "Debug: done " << std::endl;
return 0;
}
간단하게 구성해봤습니다. 메뉴얼에 충실하지 못해서 thread id을 얻기 위해서 실수한 것이 boost::thread::get_id()
맴버 함수를 호출하니 깨져서 뭐지 했는데 메뉴얼을 보니깐 잘못된 것을 알았습니다.
내용을 계속 추가 보강합니다.
'프로그램언어 > boost' 카테고리의 다른 글
[ Boost ] Boost::thread #4 (0) | 2011.05.12 |
---|---|
[ Boost ] Boost::thread #3 (1) | 2011.05.11 |
[ Boost ] Boost.thread #1 (2) | 2011.05.03 |
[ Boost ] Boost.array 관련 예제 만들어보기 (0) | 2011.05.03 |
[ Boost ] Boost.Array Description (0) | 2011.05.03 |