검색결과 리스트
글
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 |