Skip to content

동기/비동기, 블로킹/논블로킹 #2

@snaag

Description

@snaag

동기/비동기, 블로킹/논블로킹에 대해서

  • 동기/비동기 - 순차적으로 실행되는가.
    • 동기 : 이전 작업이 끝난 다음에 실행된다
    • 비동기 : 이전 작업이 끝났는지, 안끝났는지 상관 없이 실행된다 (언제 실행될지 예측이 불가능)
  • 블로킹/논블로킹 - 다른 작업들의 실행을 막는가.
    • 블로킹 : 실행하고 있는 작업이 다른 작업들의 실행을 막는다
    • 논블로킹 : 실행하고 있는 작업이 다른 작업들의 실행을 막지 않는다

예시

  • 동기, 블로킹 콜백
1
2
3
4
5
...
Hello world
for(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");

setTimeoutconsole.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);

forconsole.log("Hello world");실행을 막고있다. 따라서 for블로킹 이다.

for종료되어야 console.log("Hello world");실행된다. 따라서 console.log("Hello world");동기적 으로 실행 되었다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    프로그래밍기반 지식 > 프로그래밍

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions