딜레이 워크는 지정한 시간만큼 후에 실행하는 워크입니다. 딜레이 워크 처리 과정에서 동적 타이머를 사용하는데 다음 그림을 보면서 '딜레이 워크 처리' 전체 실행 흐름을 확인하겠습니다.

[그림 7.20] 딜레이 워크 실행 전체 흐름도
각 단계별로 딜레이 워크 실행 흐름을 살펴보겠습니다.
① 단계: 딜레이 워크큐 초기화
딜레이 워크큐를 쓰려면 먼저 딜레이 워크큐를 초기화해야 합니다. 이를 위해 INIT_DELAYED_WORK() 함수를 호출해야 합니다.
② 단계: 딜레이 워크큐 타이머 등록
딜레이 워크를 실행하려면 지연 시간 정보와 함께 schedule_delayed_work() 함수를 호출해야 합니다. schedule_delayed_work() 함수 내부에서 딜레이 워크 전용 동적 타이머 핸들러인 delayed_work_timer_fn() 함수로 동적 타이머를 등록합니다.
③ 단계: 딜레이 워크 큐잉
딜레이 워크로 설정한 동적 타이머 만료 시각이 되면 타이머 핸들러인 delayed_work_timer_fn() 함수를 실행합니다. 이 함수는 다음 동작을 합니다.
딜레이 워크를 워크큐에 큐잉
워커 스레드를 깨움
이 과정부터 워크와 실행 흐름이 같습니다.
④ 단계: 딜레이 워크 실행
워커 스레드가 깨어나면 worker_thread() 함수에서 process_one_work() 함수를 호출해 딜레이 워크를 실행합니다.
딜레이 워크 실행 전체 흐름도로 우리는 다음 사실을 알 수 있습니다.
딜레이 워크는 워크를 일정 시간 후 지연해 실행한다.
딜레이 워크 전체 흐름도를 살펴봤으니 이어서 딜레이 워크 초기화 과정을 소개합니다.
Updated: 04/19/2020
최근 덧글