Thread
란 ?
A Thread
is a sequence of instructions that can be executed by a runtime.
-> Thread
란 runtime에의해 실행되는 instruction들의 순서이다.
각 프로세스는 적어도 한개의 thread
를 가지고 있다. iOS에서, 프로세스의 보통 main thread
라고 불리는 것에서 시작된다. 모든 UI요소들이 생성되고 관리되는 Thread
이다(Main Thread는). User interaction들과 관련된 모든 interrupt들은 main thread
에서 실행된다.
Cocoa programming은 다른 thread
들로 부터 UI elementes들이 업데이트되는것을 허락하지 않는다. 이 말은 app이 backgound thread
들을 실행할 때마다(network나 다른 processing과 같은), context switch를 실행해야 한다 UI update를 실행하기 위해, 예를들어, progress bar
는 task progress를 가리킨다. 또는 label
는 process의 결과를 나타낸다.<- Context switcing 한다는 말이겠지 ~
앱이 비정상(?) 적으로 딜레이가 발생할때.
이럴리가 없는데 버벅거릴때
Thread
를 살펴보자
Indicator 화면
Thread 화면
추적하려면 여길 눌러!
멀쩡한 상태
Delay 발생하는 부분 (탈모
라고 표시한 부분)
메인 쓰레드 확 떨어질때 추적 하는 방법!
실기기로 실행 -> Profile in instrument -> Popup menu 중 Profile 클릭
🟥 ㅤㅤ: Global Queue 에 Background qos task를 sync로 한것같다.
ㅤㅤㅤㅤMain Thread가 저렇게 숨질수가 없다.
ㅤㅤㅤㅤ그래프로 저렇게 순간 낮아지는건 CPU Usage 100%를 치면서 다른 Thread 작업이 폭발하거나
ㅤㅤㅤㅤMain Queue에 sync가 걸리는 상황일거라
ㅤㅤㅤㅤ동시성 Queue(이게 sync Queue란 말인가??)를 따로 생성해서
ㅤㅤㅤㅤ거기에 background qos tast를 밀어넣은게 아니라면...
🔷 ㅤㅤ:
ㅤㅤㅤㅤ아마 저 끝자락..
ㅤㅤㅤㅤ순간 훅 높아지는 게 먹히는 부분 같습니다
🟥 ㅤㅤ: 그
ㅤㅤㅤㅤ멈춤이 의심 되는 부분에
ㅤㅤㅤㅤ다른 쓰레드 사용량 올라가는거 있나요?
ㅤㅤㅤㅤ메인큐가 블락 걸리는거 같은디..
ㅤㅤㅤㅤqos 백그라운드 가
ㅤㅤㅤㅤ백그라운드에서 실행하란게 아니라
ㅤㅤㅤㅤ작업 우선 순위가 낮은 작업단계라
ㅤㅤㅤㅤ해당 큐에서 우선순위 낮은 작업일 뿐이지
ㅤㅤㅤㅤ어디 큐에 태스크를 async냐 sync냐에 따라
ㅤㅤㅤㅤ차이가 갈리거든요
ㅤㅤㅤㅤqos 백그라운드다 해서 메인쓰레드가 아닌 다른 쓰레드에서 작업을 하는게 아닌게 포인트..
🔷ㅤㅤ : 이것저것 확인해본 결과 iOS15
버그네요😓
ㅤㅤㅤㅤ텍스트필드에 (영어는 안 그럼) 한국어 입력했다가 포커스 빼고 다시 포커스 넣고 한국어 입력하고 반복하
ㅤㅤㅤㅤ다보면 이상한 딜레이가 발생하네요. 네이버 지도 및 대기업 앱에서도 이런 문제가 있더라고요.