노드
-
asynchronous-synchronous programmingTodayILearned/TILWIL 2022. 5. 2. 02:31
노드의 동기, 비동기, 블로킹, 논블로킹 개념은 엄청 기본적인 상식이다. 하지만 잠깐 외웠다가도 금방 헷갈리는 개념이었는데, 동기, 비동기는 무엇과 동기되고 비동기된다는 뜻일까? 스레드*의 흐름이 공통자원의 데이터와 동기, 비동기 된다고 생각하면 될 것 같다. 동기라는 단어는 운영체제 강의에서 자주 들어본 단어이다. 운영체제에서 동기화에 대해서는 이렇게 설명한다. 공통 자원에 여러명이 동시에 접근할 때, 임계구역 문제가 발생한다. 이것을 해결하기 위해 프로세스/스레드를 동기화하는데 이 때 동기화 도구로 세마포어가 있다. 세마포어는 공통된 자원에 접근하는 여러 프로세스들을 관리하는 것인데, 예를들어 내 은행계좌(인데 천만원이 있는) 에서 A가 천만원을 빼간 후, B가 동시에 천만원을 또 출금하겠다고하면 은..
-
블로킹과 논블로킹 그리고 스레드의 관계(1)TodayILearned/node.js 2020. 10. 28. 00:45
/Nonblocking 논블로킹이란, 이전 작업이 완료 될 때 까지 멈추지않고 다음 작업을 수행함을 의미 블로킹이란, 이전 작업이 멈추지 않으면 다음 작업을 수행하지 않음을 의미 Blocking방식의 코드 function longRunningTask(){ //오래걸리는 작업 console.log('작업끝'); } console.log('시작'); longRunningTask(); console.log('다음작업'); 실행내역 > 오래걸리는 작업이 끝나지 않으면 다음작업은 호출되지않는다. NonBlocking방식의 코드 function lonRunningTask(){ //오래걸리는 작업 console.log('작업끝'); } console.log('시작') setTimeout(longRunningTask,..