web/javascript

JavaScript - 동기(synchronous), 비동기(asynchronous)

blackbearwow 2023. 2. 15. 23:51

c, c++, java, python을 공부한 나에게 프로그래밍 언어는 항상 동기적으로 동작하는 줄 알았다.

c, c++, java는 비동기적으로 여러가지 작업을 처리하려면 thread또는 process를 만들어 사용해야 한다.

(python은 어떻게 작동하는지 잘 모른다)

 

물론 javascript도 동기적으로 동작한다. 하지만 javascript는 비동기적으로 동작하기도 한다!

 

대표적으로 setInterval(), setTimeout() 함수가 비동기적인 함수이다.


나중에 이해한 내용

c, c++, java는 thread를 만들거나 fork로 process를 만들어 여러가지 작업을 동시에 작업한다.

js는 thread를 만들거나 fork를 할 수 없다. 대신 Promise 또는 webapi를 사용해 여러가지 작업을 비동기적으로 (동시에) 작업할 수 있다. setInterval, setTimeout이 webapi의 함수들이다. 

 

c++의 thread는 운영체제가 스케줄링 해주는 대로 작업이 진행된다.

js는 특정 요청들(timer, fetch등 webapi에서 처리하는 작업들)에 대해서만 다른 thread(webapi의 thread)에서 처리하고, 코드는 main thread에서 처리한다.

 

참고문헌: https://ljtaek2.tistory.com/142

'web > javascript' 카테고리의 다른 글

youtube html에 삽입하기(youtube iframe_api)  (0) 2023.08.31
JS Promise.all & Promise.race  (0) 2023.02.21
JS async & await  (0) 2023.02.20
JS Promise  (0) 2023.02.20
js 정규표현식 (regular expression)  (0) 2022.08.01