일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 비동기
- hokeys
- 개발자
- 자바스크립트 자료구조
- 자바스크립트
- 호키도키
- HTML
- 계명대
- hokidoki
- javascript
- 자스민
- 스벨트
- 계명대 이종호
- 호키스
- 힛잇
- 스위프트
- 자료구조
- 이종호
- Svelte
- react
- data structure
- TDD
- SWIFT
- 리액트 예제
- IOS
- 개발
- queue
- Hitit
- 리액트
- jest
- Today
- Total
목록async (4)
Dog foot print
들어가기 앞서 Dispatch Queue는 어떤 쓰레드로 작업을 보내기 위한 대기행렬을 의미한다. 이 포스팅에서 다뤄볼 내용은 각 쓰레드 마다 어떤 역할을 하고 있고, 작업이 어떻게 이루어 지는지를 다뤄본다. Main Main 쓰레드로 작업을 보내기 위한 Queue이다. 이 Queue의 특징은 다음과 같다. Serial Queue 이다. 작업이 끝나야 다음 작업이 실행된다. Main Thread에게 작업을 요청한다. 유일한 쓰레드인 Main Thread 에게 요청 UI업데이트 작업을 요청 할 수 있다. 유일하게 UI업데이트를 요청 할 수 있다. sync메서드를 사용 할 수가 없다. 이 queue로 작업을 보낼 때 sync 메서드를 사용하여 코드를 처리하면 에러가 발생한다. 사용 예시 DispatchQue..
Async 비동기 Async는 어떤 작업이 끝나기를 기다리지 않고, 다음 작업이 실행되는 것을 의미한다. 아래의 코드를 보도록 하자 . import Foundation print("1") DispatchQueue.global().async(){ print("2") } print("3") 위의 코드는 순차적으로 실행되지 않는다. 이것을 그림으로 보면 다음과 같다. DispatchQueue.global().async 의 코드 역할은 블락에 있는 코드를 전달하는 것으로 이 코드의 역할은 마무리 된다. 그러므로 2번째 프린트 문을 기다리지 않고 print(3)이 출력된다. Sync 동기 Sync는 작업을 다른쓰레드에 시키고 그 일이 종료될 때 까지 기다린다는 의미이다. 아래의 코드를 보자 print("1") D..
쓰레드란 무엇인가 ? 쓰레드를 쉽게 이해하기위해서는 내 Application에서 동작하는 일꾼 이라고 생각 할 수 있다. 우리의 어플리케이션이 동작 할 때도 이런 쓰레드에게 일을 맡겨야 하는데, 우리가 만약 별도의 쓰레드에게 일을 맡기지 않는다면 메인 쓰레드 에서 일을 모두 하게 된다. 쓰레드를 생성하고 삭제하는 일을 꽤나 고난이도의 일이다. 그렇기에 IOS에서는 친절하게도 쓰레드를 생성하거나 삭제하는 일을 대신 해주고 우리는 별도의 쓰레드에게 일을 시키기만 하면 된다. 별도의 쓰레드에게 일을 시키는 이유 이런 의문이 들 수 있다. 현재까지 쓰레드를 나누지 않고, 잘만 사용 되던데요. 굳이 다른 쓰레드에게 일을 시키는 상황이 있을까요 ? 합리적인 질문이다. 우리의 IOS CPU의 성능은 정말이지 엄청나다..
노드를 공부하다보니 책에서 이벤트와 콜백 개념이 계속해서 등장했다. 단순히 콜백이나 동기와 비동기가 아닌 노드내부에서 v8엔진이 콜백을 처리할 때 어떻게 되어있는지 설명을 하는데 그냥 넘어가기에는 내용이 조금 복잡하니 포스팅으로 글을 남기려 한다. 동기와 비동기 console.log('start'); console.log('middle'); console.log('end'); 위의 코드 결과는 당연히 start , middle , end 순이다. 이 처럼 코드를 위에서 아래로 읽으면서 순차적으로 코드를 실행하는 것을 동기(Syncrhronous 줄여서 sync)라고 한다. setTimeout(() => { console.log("first") }, 3000); setTimeout(() => { conso..