본문 바로가기

GCD2

Swift) GCD (Grand Central Dispatch) Task Distribution 우린 일을 한다. 아 물론 지금의 난,,, 네,, 이건 간단한 것이니깐 알바를 예로 들어 설명해보겠다. 사장님이 알바생 한명한테만 일을 계속 시킨다. 하지만 알바생은 한번에 하나의 일밖에 하지 못한다.. 바닥 닦으면서 불판을 어떻게 닦아.. 주어진 일을 하나씩 처리해야하는데, 불판 닦고, 손님 응대하고, 바닥 닦고, 세금 처리까지 다 하고 사장님 애를 봐야한다. 그럼 사장님 애는 알바생에게 먼저 맡겨진 일이 모두 처리될 동안 뭐해야됨 상당히 비효율적일 것이다. 그럼.. 일을 분배하면 되겠지? 알바생을 더 써서 일을 나눈다면 이전보다 훨씬 효율적으로 일을 처리할 수 있을 것이다. 자.. 위에서 든 예에서 알바생을 "스레드"로 바꿔서 생각해보자 메인 스레드에만 할당되어있던 일.. 2022. 2. 15.
Swift) Main.sync 외 않됌? sync, async .. concurrent, serial을 공부하다가 main.sync를 돌려보니 프로그램이 죽는 것을 보고.. 왜 그런건지 어제 오늘 하루종일 생각해봤다. 왜 main.sync 하면 안됨? 먼저 생각해본 것은 뭐였냐면.. 메인 스레드는 프로그램이 시작하고, 종료될 때까지 계속 일을 처리하고 있으니, 해당 스레드에 동기적으로 일을 시켜버리면 프로그램이 필수적으로 해야됐던 일을 내가 동기적으로 시킨 일을 처리할 때까지 하질 못하니깐 프로그램이 죽는거 아닐까? 라고 생각했다. 메인 큐는 serial queue이고, 일을 순차적으로 처리한다. 그리고 메인 큐는 일을 처리할 때 단일 스레드인 메인 스레드에 무조건 할당시키게되는데.. 이런 이유때문인가..? 도 했다.. 그래서 내가 도달한 결론.. 2022. 2. 13.