RunLoop 2

kernel-object와 mach-port 정리

kernel-object와 mach-port 정리CFRunLoop.c를 읽다 보면 mach port, timer port, wakeUpPort, source1 같은 용어가 계속 나옴.이 용어들을 이해하려면 운영체제의 커널 객체 개념이 먼저 필요해서 일부만 발췌해서 정리.해당 글을 Apple이 공개한 swift-corelibs-foundation의 Sources/CoreFoundation/CFRunLoop.c 기반으로 작성.커널 객체란?커널 객체(kernel object)는 앱 프로세스 안의 Swift/C 객체가 아니라, 커널 안에 존재하고 커널이 직접 관리하는 시스템 자원.앱은 그 객체를 직접 만지지 못하지만 파일 디스크립터나 port name 같은 `권한 있는 이름`으로만 간접 접근.user space..

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation)

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation) 서비스 및 기능에 따라서 RunLoop.main에서 돌아가게 하면 안되는 케이스도 존재. 잘못 설계할 경우 Timer기반으로 동작하는 로그나 기능 등 예상치 못한 결과를 낼 수 있음. RunLoop.main에서 타이머가 아예 방출되지 않거나 RunLoop.main이 아닌 다른스레드에서 돌려야 하는 경우에 대하서 자세히 알아볼 예정 위 케이스들을 내부 구현 코드를 통해 근거 있게 정리해보고자 함. 글의순서 타이머 알아보기 swift-corelibs-foundation내에 Timer 구현 알아보기 Timer 선언부 Timer scheduledTimer 함수 RunLoop 간단히 알아보..