일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아펠가모
- Kotlin
- kopring
- 아펠가모 선릉
- @Component
- elk
- 코프링
- c# scv
- 스페인
- HTTP #웹기술
- 코틀린 함수
- 마드리드
- 세비야
- db index
- 아펠가모선릉
- 본식후기
- kotiln
- 400에러
- b-tree index
- 그라나다
- git명령어
- 스프링 AOP
- HTTP
- 바르셀로나
- http상태코드
- 관심지향프로그래밍
- 코틀린
- Srping AOP
- sprintboot
- 스페인 준비물
- Today
- Total
끄적이는 메모장
[끄적끄적 메모하기] Non-Blocking 본문
Non-Blocking ? 하나의 수행에 의해 멈춤이 발생하지 않도록 하는 방법론
두 가지 관점에서 볼 수 있음
1. Non-Blocking I/O : 작업을 외부에 위임하여 특정 작업에 의해 멈추지 않고 후속 작업이 수행 될 수 있게 하는 것
2. Non-Blocking Algorithm : 공유자원을 안전한 방법으로 동시에 사용 가능하도록 하는 것
# Non-Blocking I/O
- 프로세스가 블록되지 않음
- 특정 작업을 호출 직후 해당 작업의 완료를 기다리지 않고 다음 처리로 넘어감
- 만약, 해당 작업의 완료가 필요하다면 콜백 혹은 polling 등을 통해 후속 작업을 처리해줌
*Asynchronous programming
- non-blocking i/o와 혼동하여 생각이 가능하며 주 실행흐름이 멈추지 않는 프로그램 방식인 것은 유사
- 특정 코드의 실행을 별도의 채널에 맞기는 형식으로 해당 코드의 결과는 프로그래밍 언어가 지원하는 방식으로 처리가능
(future, coroutine, task/await 등)
# Non-Blocking Algorithm
- Thread의 중단 혹은 blocking없이 공유 자원에 접근이 가능하도록 하는 알고리즘
- Thread A가 공용 자원을 사용중인 경우 Thread B가 이 자원을 사용하고자 한다면 이를 사용할 수 없음을 Thread B에 통지해줌
- 만약 Blocking Algorithm이었다면 Thread B는 Thread A가 공용 자원을 모두 사용할 때 까지 대기를 했을 것
- Non-Blocking Algorithm의 이점은
(1) 현재 공용 자원을 이용할 수 없는 Thread가 어떤 동작을 수행할 지 선택을 할 수 있으며
(2) 특정 자원을 사용하기 위한 대기가 없으므로 데드라을 회피할 수 있으며
(3) Thread의 정지가 발생하지 않기 때문에 컨텍스트 스위칭에 소모되는 비용이 적고
(4) 응답 지연을 감소시킬 수 있음
'메모장 > 얕은지식' 카테고리의 다른 글
[끄적끄적 메모하기] GIT 명령어 정리 (0) | 2020.05.08 |
---|