[swift] DispatchSource를 이용한 이벤트 주도 비동기 작업 처리

비동기 프로그래밍은 모던 앱 및 시스템 개발에서 매우 중요한 역할을 합니다. 이벤트 주도 비동기 작업을 효과적으로 처리하려면 DispatchSource를 사용할 수 있습니다. DispatchSource는 파일 디스크립터, 타이머 등 다양한 이벤트 소스에 대한 이벤트 모니터링을 지원합니다.

DispatchSource란?

DispatchSource는 Grand Central Dispatch(GCD)의 일부로, 이벤트 주도 처리에 특화되어 있습니다. DispatchSource는 파일 디스크립터, 타이머, 신호 등 다양한 이벤트 소스를 관찰하고, 해당 이벤트가 발생할 때마다 콜백 블록을 실행합니다. 이를 통해 비동기 작업을 효율적으로 처리할 수 있습니다.

DispatchSource를 사용한 예제

다음은 DispatchSource를 사용하여 파일 디스크립터를 모니터링하고 파일에 변화가 있을 때마다 콜백 블록을 실행하는 간단한 예제입니다.

import Foundation

let fileDescriptor = open("/path/to/file", O_RDONLY)
let source = DispatchSource.makeFileDescriptorSource(fileDescriptor: fileDescriptor, eventMask: .write, queue: .main)

source.setEventHandler {
    print("파일에 변화가 있습니다.")
}

source.resume()

위 예제에서는 지정된 파일의 디스크립터를 감시하고 있으며, 파일에 쓰기가 발생할 때마다 “파일에 변화가 있습니다.”라는 메시지를 출력합니다.

결론

DispatchSource를 통해 이벤트 주도 비동기 작업을 효과적으로 처리할 수 있습니다. 파일 모니터링을 비롯한 다양한 이벤트 소스에 대한 처리를 위해 DispatchSource를 적극적으로 활용해보세요.

참고 자료: Apple Developer Documentation