-
동기, 비동기 / 싱글 스레드, 멀티 스레드Memo/Others 2023. 12. 29. 23:10
✅ 동기 (Synchronous)
코드가 순차적. 작성한 순서대로 실행된다.
함수를 호출(요청)하고 결과(응답, 종료)가 돌아와야만 다음 함수(요청)를 실행할 수 있다.
다음 함수는 선행 작업이 끝나기를 기다려야 한다.
✅ 비동기 (Asynchronous)
코드(작업)가 언제 실행될지 순서를 예측할 수 없다.
함수를 호출(요청)하고 결과(응답, 종료)을 기다리지 않고 다음 함수(요청)을 실행할 수 있다.
예외적으로 'await'로 선언된 메서드는 해당 메서드의 처리가 완료될 때 까지 대기
→ 처리 결과를 다른 곳에 넘겨줘야 하는 상황에 사용
이미지: https://medium.com/from-the-scratch/wtf-is-synchronous-and-asynchronous-1a75afd039df ✅ 스레드 (Thread)
프로세스 내에서 실행되는 흐름의 단위
모든 프로세스는 하나 이상의 스레드를 가진다.
✅ 싱글 스레드 (Single Thread)
하나의 프로세스가 한 번에 하나의 작업만 수행 (작업 공간이 하나)
프로세스가 단일로 동작하는 것
✅ 멀티 스레드 (Multi Thread)
하나의 프로세스가 한 번에 여러 작업을 수행 (작업 공간이 여러개)
프로세스가 다중으로 동작하는 것
시스템 자원을 보다 효율적으로 사용 가능 & 응답성 향상
동기화(하나의 자원에 여러 스레드가 접근) 문제 유의해야 한다.
문맥 교환(Context Switching)을 이용
이미지: https://velog.io/@gil0127/싱글스레드Single-thread-vs-멀티스레드-Multi-thread-t5gv4udj ⭐ 동기/비동기는 작업 순서를 의미
⭐ 스레드는 작업 공간을 의미
이미지: https://stackoverflow.com/questions/59139242/stdasync-does-not-seem-to-really-implement-single-threaded-asynchronous-beha 'Memo > Others' 카테고리의 다른 글
라이브러리와 프레임워크의 차이점 (0) 2021.11.23