- 동기 : 동시에 일어나는
- 요청과 결과가 동시에 일어난다.
- 어떤 객체 또는 함수 내부에서 다른 함수를 호출했을 때, 함수의 결과를 호출한 쪽에서 처리
- ex) C 언어의 scanf()
사용자가 입력하면 그 결과를 자신이 처리 - 대부분의 함수는 동기적 방식
- ex) C 언어의 scanf()
- 결과가 주어질 때까지 아무것도 못 하고 대기해야 한다.
- 비동기 : 동시에 일어나지 않는
- 요청과 결과가 동시에 일어나지 않는다.
- 어떤 객체, 함수 내부에서 다른 함수를 호출했을 때, 함수의 결과를 호출한 쪽에서 처리하지 않음
- ex) JS의 setTimeout()
명시한 시간이 흐른 경우, setTimeout이 아니라 setTimeout 인자로 넘겨준 콜백함수를 통해 수행 결과를 처리
- ex) JS의 setTimeout()
- 결과가 주어지는데 시간이 걸리지만, 그 시간동안 다른 작업을 할 수 있다.
- +)thread를 사용하면 asynchronous events를 효율적으로 처리할 수 있다.
- blocking
- 수행 결과가 끝날 때까지 제어권을 갖고 있는 경우
- non-blocking
- 수행 결과가 끝나지 않아도 제어권을 반납하는 경우
* 참고
'다전공_컴퓨터공학 > 시스템프로그래밍, 운영체제' 카테고리의 다른 글
리눅스 환경에서 디버깅하는 방법 (0) | 2021.05.26 |
---|---|
[SP] non-reentrant (0) | 2020.12.07 |
[SP] undefined reference to 'timer_**' (0) | 2020.12.06 |
[SP] vi editor 복사 붙여넣기 (0) | 2020.12.06 |
[SP] undefined reference to 'pthread_**' (0) | 2020.12.05 |