You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UI 업데이트가 일어나는 스레드는 메인 스레드입니다. 이러한 UI 업데이트를 메인 스레드에서 작업 하는 이유는 Main RunLoop가 동작하기 있기 때문입니다.
메인 스레드에서는 RunLoop가 일정한 주기를 유지하며 계속 동작하며 UI를 그리게 되는데 이때 이 View Drawing Cycle에 UI가 그려지는 시점을 일치시키기 위해 메인 스레드에서 동작합니다.
만약 이러한 UI 업데이트를 다른 스레드에서 한다면 해당 스레드의 RunLoop와 Main RunLoop의 타이밍이 달라지기에 UI를 그리는게 제각각이 됩니다.
또한 Main RunLoop 처럼 자동으로 지속적으로 돌고있는것 또한 아니기에 더욱 복잡해집니다.
추가적으로 UI를 위한 프레임워크의 요소들은 Thread-nonsafe한 요소입니다. 그래서 모든 스레드에서 접근이 가능한데, 만약 다른 스레드에서 UI 업데이트를 한다면 Race condition이 발생하고, 이를 safety하게 하기 위해 여러 장치를 사용한다면 오버헤드로 인해 유저가 버벅임을 느끼거나 멈춤 현상 같은 것을 쉽게 느끼게 됩니다.
The text was updated successfully, but these errors were encountered: