일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 자료구조
- 계명대
- 스위프트
- queue
- Svelte
- 리액트
- 개발자
- data structure
- 계명대 이종호
- HTML
- 개발
- hokidoki
- 비동기
- SWIFT
- jest
- IOS
- react
- 자료구조
- 자스민
- 이종호
- 힛잇
- Hitit
- TDD
- 자바스크립트
- hokeys
- javascript
- 스벨트
- 리액트 예제
- 호키도키
- 호키스
- Today
- Total
목록비동기 (6)
Dog foot print
비동기와 동시의 차이 학생들과 이야기 해보면 비동기 와 동시 의 의미를 헷갈리는 경우가 종종 존재한다. Serial 과 Concurrent를 설명하기 전에 집고 넘어가도록 하자. 비동기는 말그대로 어떤 작업을 기다리지 않는다라는 의미이며, 동시라는 의미는 같은 시간에 어떤 작업이 말 그래도 동시에 일어 날 수 있는 것을 의미한다. Serial Queue SerialQueue는 순서가 중요한 작업들을 처리할 때 사용 되는 큐이다. 아래의 코드를 보도록 하자. let queue = DispatchQueue(label : "serial") queue.async{ sleep(3); print("1") } queue.async{ sleep(2); print("2") } queue.async{ sleep(1); p..
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의 성능은 정말이지 엄청나다..
[IOS] 동기적 작업과 비동기적 작업 동기적 작업 동기적 작업은 어떤 일련의 작업들이 순서를 기다리며 이전에 할 일이 끝나면 자신의 일을 하는 것을 의미 한다. 다음의 그림을 보며 이해하도록 하자. 위의 그림을 보면 손님은 여러명인데, 직원은 한 명이다. 이 경우 직원은 한명의 손님의 주문을 처리하기 위해 다음과 같은 절차를 가진다. 손님에게 주문을 받는다. 주문을 처리하기 위해 음식물을 제조한다. 음식물을 손님에게 전달한다. 다시 1로 이동 위와 같이 어떤 작업 실행이 순차적으로 진행 되는 것을 동기적 작업이라고 한다. 비동기적 작업 비동기적 작업은 작업의 순서 상관없이 발생하는 작업을 의미 한다. 아래의 그림을 보며 이해하도록 하자. 위의 그림도 동기적 작업 그림과 동일하지만 , 알람이 존재한다. ..
노드를 공부하다보니 책에서 이벤트와 콜백 개념이 계속해서 등장했다. 단순히 콜백이나 동기와 비동기가 아닌 노드내부에서 v8엔진이 콜백을 처리할 때 어떻게 되어있는지 설명을 하는데 그냥 넘어가기에는 내용이 조금 복잡하니 포스팅으로 글을 남기려 한다. 동기와 비동기 console.log('start'); console.log('middle'); console.log('end'); 위의 코드 결과는 당연히 start , middle , end 순이다. 이 처럼 코드를 위에서 아래로 읽으면서 순차적으로 코드를 실행하는 것을 동기(Syncrhronous 줄여서 sync)라고 한다. setTimeout(() => { console.log("first") }, 3000); setTimeout(() => { conso..
콜백 이후로 포스팅 난이도가 상승했다. 그렇지만 매일 2개씩 뭐든지 포스팅하겠다고 약속한 이상 꾸준히 공부해서 해야한다. 동기와 비동기 우리는 코드를 짤때 위에서 아래로 짜면서 먼저 해야할 연산과 작업을 위에 작성하고 흐름에 맞게 작성하였다. 그러나 다음과 같은 상황에서는 어떨까 ? console.log("hello ? ") setTimeout(function(){console.log("i'm fine")},3000); //setTimeout 함수는 첫번째 인자로 콜백함수를 받고 2번째 인자로 ms(밀리 세컨즈)를 받아 시간이 경과하면 함수를 실행 시킨다. console.log("and you ? "); 우리가 여지것 작성했던 코드를 생각하면 위의 코드는 hello -> 3초뒤 i'm fine-> and..