목록CS (88)
기어가더라도 제대로
비동기 작업을 다른 스레드로 보내서 처리를 하는데, 보내는 즉시 원래 스레드로 리턴한다. 1번 작업이 오래걸리더라도, 그 일이 끝나던지 말던지 2번 작업으로 갈 수 있다. DispatchQueue.global().async { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 안기다린다. 동기 1번 작업이 끝날 때까지 메인 스레드를 막고 기다린다. 다른 큐에 보내는 것 같지만 실질적으로 처리는 메인 스레드에서 진행한다. DispatchQueue.global().sync { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 동기적으로 기다린다. 위에 task1,2,3() 메서드들은 시작 - 완료 사이에 `s..
iOS 에서 제공하는 두가지 작업 대기열이다. 직접적으로 쓰레드를 관리하지 않고, "큐(Queue)" (대기열/대기행렬)라는 개념을 이용해 작업을 분산처리 GCD / Operation 을 사용해 시스템에서 알아서 쓰레드 숫자를 관리함 쓰레드 보다 더 높은 레벨/차원에서 일을 한다고 보면됨? 오래걸리는 작업들이 비동기적으로 작업하도록 만들어준다. DispatchQueue "큐에 보낸다" 라는 뜻 클로저 안에 들어가는 코드는 작업(Task)의 한 단위 이다. 하나의 테스크 안에선 순차적으로 작업 // 선언하지 않고 큐를 사용 DispatchQueue.global().async { // 큐에 보낼거야.글로벌큐에.비동기적으로 // task here } // 선언하여 큐를 사용 let queue = D..
필요성 동시성이 없다면 버벅일 수 있다. 동시성이 있다면 버벅이지 않는다. -> 성능, 반응성 은 최적화 스레드는 무엇이고, 코어는 무엇인가? CPU core 싱글 코어는 한번에 하나의 일만 할 수 있다. 프로세스 중에 전환이 아주 빨라 사람이 보기엔 동시에 작업되는 것처럼 보임 2004년도에 클럭의 한계 상한에 도달했다. 싱글코어는 더이상 발전이 어렵다. 멀티 코어 체제로 가자 코어 끼리의 통신이 중요 포인트 스레드 4코어 8 스레드는 뭔가요? 여기서 용어 정리가 필요한데, 제조사에서 말하는 스레드 소프트웨어 적인 스레드 이 둘이 다르다. 하이퍼 스레딩(2002) 하나의 코어를 두개의 스레드로 용도를 나누어서 마치 물리적인 두개의 코어가 있는 것처럼 보이게 하..