검색결과 리스트
글
Tutorial 3. Binding arguments to a handler
Programming/Boost asio
2015. 3. 15. 16:22
다음에 기반함
http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/tutorial/tuttimer3.html
이제 AsyncTimer 를 수정해서 1초에 한번씩 실행 되도록 수정하겠다고 한다.
타이머 시간을 수정하고 (기존 5초), 다시 내부에서 새로운 비동기 wait 을 호출하면 된다.
즉, 핸들러내부에서 타이머 객체에 접근하는 것이 필요하다.
2 개의 인자를 추가한다.
boost::asio::deadline_timer* t (deadline timer 는 reference 가 불가능하게 되어있다.) 와 int* count 이다. (최종 count 값을 리턴받으려면 pointer 로. )
count 는 6번째로 타이머가 실행되었을 때는 타이머를 다시 실행시키지 않도록 하기 위해 추가한 인자다.
io_service 에는 stop 과 같은 명시적으로 중지를 요청하는 호출이 없고, 대신 'work' 가 없을때 함수가 종료된다는 것을 상기하자.
카운트가 5에 도달하면 새로운 async_wait 을 호출하지 않는 것으로 io_service 는 work 가 소진되고 동작이 중지 될 것이다.
그리고 타이머의 만료시간을 이전 만료시간으로부터 1초 뒤로 지정한다. 이전 시간에서 계산하는 것으로 핸들러를 처리하는데 소요된 시간으로 인해 지연되지 않도록 한다.
periodTimer
메인함수. 호출부
'Programming > Boost asio' 카테고리의 다른 글
Tutorial 5. Synchronising handlers in multithreaded programs (0) | 2015.04.11 |
---|---|
Tutorial 4. member function handler (0) | 2015.03.17 |
Tutorial 2. async_timer (0) | 2015.03.14 |
Tutorial 1. sync_timer (0) | 2015.02.04 |
0. 소개 (0) | 2015.02.02 |