
EvTimer::set 함수를 사용하여 타이머를 설정할 때, 재귀적으로 호출되는 콜백함수를 등록하는 방법은 다음과 같습니다.
1. EvTimer::set 함수의 첫 번째 인자로 1초를 입력하면, 콜백함수가 1초마다 호출됩니다. 하지만, 이 경우 콜백함수가 재귀적으로 호출되는 것은 아닙니다. 콜백함수는 1초마다 호출되지만, 새로운 타이머가 생성되지 않습니다.
2. 재귀적으로 호출되는 콜백함수를 등록하려면, EvTimer::set 함수를 호출할 때, 새로운 타이머를 생성하여 이전 타이머를 재사용하는 방법을 사용할 수 있습니다. 예를 들어, 콜백함수 내부에서 EvTimer::set 함수를 호출하여 새로운 타이머를 생성할 수 있습니다.
타이머를 해제하는 방법은 다음과 같습니다.
1. EvTimer::set 함수를 호출할 때, 타이머 ID를 저장합니다.
2. 타이머를 해제하고 싶을 때, EvTimer::cancel 함수를 호출하여 저장한 타이머 ID를 전달합니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
cpp
#include
int main() {
ev_base* base = ev_base_new();
ev_timer* timer = ev_timer_new(base, callback, 1.0, 0.0);
ev_timer_set(timer, 1.0, 0.0);
ev_timer_start(timer);
ev_run(base, 0);
ev_timer_stop(timer);
ev_timer_free(timer);
ev_base_free(base);
return 0;
}
void callback(ev_timer* timer, int revents) {
ev_timer* new_timer = ev_timer_new(timer->base, callback, 1.0, 0.0);
ev_timer_set(new_timer, 1.0, 0.0);
ev_timer_start(new_timer);
ev_timer_free(timer);
}
이 예제에서는 콜백함수 내부에서 새로운 타이머를 생성하여 이전 타이머를 재사용하는 방법을 사용합니다. 또한, 타이머를 해제하는 방법을 보여줍니다.
2025-06-03 22:55