포트와 같은 입력 소스가 이벤트를 실행 루프 비동기로 전달하는 반면 타이머가 이벤트를 동 기적으로 전달한다는 것은 무엇을 의미합니까?
타이머가 스레드를 차단합니까?
스레딩 프로그래밍 가이드 : 실행 루프는 말합니다 :
런 루프는 두 가지 유형의 소스에서 이벤트를 수신합니다. 입력 소스 는 일반적으로 다른 스레드 또는 다른 응용 프로그램의 메시지와 같은 비동기 이벤트를 전달합니다. 타이머 소스 는 예약 된 시간 또는 반복 간격으로 발생하는 동기 이벤트를 제공합니다. 두 유형의 소스 모두 애플리케이션 별 핸들러 루틴을 사용하여 이벤트가 도착하면 처리합니다.
그러나 타이머는 타이머의 클로저 또는 선택기 메서드가 실행되는 동안에 만 스레드를 차단합니다. 그러나 그로부터 돌아 오자마자 스레드는 더 이상 차단되지 않습니다. 따라서 가능한 한 빨리 들어오고 나가도록하십시오.
예를 들어 타이머가 10 초 안에 실행되도록 예약하고 타이머 처리 종료 / 선택기의 코드를 실행하는 데 100msec가 걸리면 스레드는 타이머가 실행될 때까지 차단되지 않고 100msec 동안 만 차단됩니다. 반복 타이머와 동일합니다.
결론적으로, 타이머 핸들러에서 계산 비용이 너무 많이 드는 일을하지 않는 한 걱정할 필요가 없습니다. 그리고 물질적 시간 동안 차단할 수있는 작업을 수행해야하는 경우 타이머 핸들러가 관련 코드를 일부 백그라운드 큐에 비동기식으로 디스패치하거나 백그라운드 큐에서 직접 실행되도록 GCD 타이머를 예약하여 Timer
모두 우회 합니다. .
그러나 대부분의 Timer
사용 사례에서 이것은 문제가되지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다