비동기 처리
여러 작업을 동시에 처리하기 위해 도입한 개념으로, 특정 작업의 완료를 기다리지 않고 다른 작업을 동시에 수행할 수 있도록 한다.
- 자바스크립트에는 setTimeout(), fetch()와 같은 비동기 처리 함수가 있다.
- 메인 스레드가 작업을 다른 곳에 인가하여 처리되게 하고, 작업이 완료되면 콜백 함수를 받아 실행하는 방식이다.
1. 동기
2. 비동기
Thread: 잡업 실행 단위(실행 흐름 단위)
동기 (Synchronous): 미리 정해놓은 약속대로 처리하는 작업 (절차흐름대로 처리 - 단일 스레드 단위)
비동기 (Asynchronous): 정해진 약속대로 처리하는게 아니라 필요한 상황에 따라 다르게 처리(실행흐름분리 - 스레드 따로 형성)
1) 비동기 처리함수
1-1) setTimeout( () => {}, time ) : 일정 시간 이후 특정 작업을 수행한다 (비동기 처리)
- 비동기 처리는 전체 실행과 별도로 실행된다
- sr-Process 2는 5초 후에 1번 실행된다 (worker-thread-01)
- sr2-Process 2는 3초 후에 1전 실행된다 (worker-thread-02)
1-2) setTimeOut(...) 의 반환값과 비동기 처리 취소 (clearTimeout)
setTimeOut()의 반환값은 해당 비동기 처리 프로세스의 식별값을 return한다.
그 식별값을 이용하여 비동기 처리 프로세스를 취소할 수 있다.
3. 비동기 프로그래밍의 문제점
한 자원에 대해 2개 이상의 쓰레드가 동시에 접근하여 변경할 수 있다.
해결법
임계 구역(영역) 설정
- 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원을 접근하는 코드의 일부이다
- 지정된 시간이 지난 후 종료된다
출처
https://inpa.tistory.com/entry/%F0%9F%8C%90-js-async