-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
프로그래밍기반 지식 > 프로그래밍기반 지식 > 프로그래밍
Description
동기/비동기, 블로킹/논블로킹에 대해서
- 동기/비동기 - 순차적으로 실행되는가.
- 동기 : 이전 작업이 끝난 다음에 실행된다
- 비동기 : 이전 작업이 끝났는지, 안끝났는지 상관 없이 실행된다 (언제 실행될지 예측이 불가능)
- 블로킹/논블로킹 - 다른 작업들의 실행을 막는가.
- 블로킹 : 실행하고 있는 작업이 다른 작업들의 실행을 막는다
- 논블로킹 : 실행하고 있는 작업이 다른 작업들의 실행을 막지 않는다
예시
- 동기, 블로킹 콜백
1
2
3
4
5
...
Hello worldfor(i=0; i=987654321; i++) {
console.log(i);
}
console.log("Hello world");For 문의 실행이 종료가 되어야 Hello world 가 출력된다.
- 비동기, 논블로킹
Hello world
1
2
3
4
5
...setTimeout(() => {
for(i=0; i=987654321; i++) {
console.log(i);
}
}, 500);
console.log("Hello world");setTimeout 은 console.log("Hello world"); 의 실행을 막지 않았다. 따라서 setTimeout 은 논블로킹 이다.
setTimeout 이 종료되지 않아도 console.log("Hello world"); 가 실행된다. 따라서 console.log("Hello world"); 는 비동기 적으로 실행되었다.
- 그러나 만약 이렇게 되어있다면,
setTimeout(() => {
for(i=0; i=987654321; i++) {
console.log(i);
}
console.log("Hello world");
}, 500);for 는 console.log("Hello world"); 의 실행을 막고있다. 따라서 for 는 블로킹 이다.
for 가 종료되어야 console.log("Hello world"); 가 실행된다. 따라서 console.log("Hello world"); 는 동기적 으로 실행 되었다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
프로그래밍기반 지식 > 프로그래밍기반 지식 > 프로그래밍