Tutorial 2. async_timer

Programming/Boost asio 2015. 3. 14. 16:14

다음 내용에 기반함


http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/tutorial/tuttimer2.html


이전 시간에 deadline_timer 를 이용하여 5초 대기후 메시지를 출력, 종료하는 프로그램을 다뤄봤다. 

sync 함수를 호출했기 때문에 이를 호출한 스레드는 다른 작업을 수행 할 수 없었다.


이제 async 하게 동작하여 호출한 스레드가 다른 작업을 수행할 수 있도록 해보자.


사용했던 함수를 async_wait 으로 변경한것, 그리고 run() 을 호출한 내용이 다르다. 


io_service::run() 은 지정한 work 를 수행하도록 명령한다. 동작이 완료되면 work 에 함께 지정된 핸들러(콜백)를 호출해주는데, 

이때 핸들러는 run() 을 호출한 스레드에서만 호출이 된다. 즉, 스레드풀등에서 run() 을 호출하면 해당 스레드풀에서 핸들러가 호출 되게 하는 방식으로 사용할 수 있다.


수정한 내용이 많지 않기 때문에, 코드를 보면 간단하게 이해가 가능하다.


1. io_service 와 io_object 를 생성하고

2. aync_wait 이라는 work 를 지정하고

3. run() 수행


튜토리얼과 다소 차이가 있는 부분은, 프로젝트의 관리 편의상 클래스를 지정했는데 이에 따라 handler 지정시 bind 로 전달했다.


Class AsyncTimer



int main()



'Programming > Boost asio' 카테고리의 다른 글

Tutorial 5. Synchronising handlers in multithreaded programs  (0) 2015.04.11
Tutorial 4. member function handler  (0) 2015.03.17
Tutorial 3. Binding arguments to a handler  (0) 2015.03.15
Tutorial 1. sync_timer  (0) 2015.02.04
0. 소개  (0) 2015.02.02