본문 바로가기

전체보기/Computer science

(2)
Sync, Async & Blocking, Non-Blocking 파헤치기 저를 포함한 많은 분들이 blocking과 synchronous, non-blocking과 asynchronous의 차이점을 명확하게 알지 못하는 것 같아, 이번 글에서는 위 개념들에 대해 공부하면서 이해한 것들을 공유해보려고 합니다. (혹시나 잘못 설명하고 있는 점이 있다면 언제든 댓글 달아주세요.) 결론부터 말씀드리면, 두 개념(Blocking & Non-Blocking / Synchronous & Asynchronous)는 각각 제어권과 결과값을 초점으로 두고있습니다. 글만으로는 이해가 안될 것 같아 예제 코드를 가져와봤습니다. 예제 코드는 이름과 나이로 player를 찾고, (중복은 없다고 가정하겠습니다.) 해당 player가 성인이라면 player를 return하는 간단한 코드입니다. Block..
Parallelism(병렬성)과 Concurrency(동시성) 이번 글에서 parallelism과 concurrency에 대해 정리해보겠습니다. 먼저 각각의 개념의 정의는 다음과 같습니다. 병렬 컴퓨팅(parallel computing) 또는 병렬 연산은 동시에 많은 계산을 하는 연산의 한 방법이다. 병행성(concurrency)은 컴퓨터 과학에서 여러 계산을 동시에 수행하는 시스템의 특성 뭔가 차이는 있어보이지만 직관적이지는 않은 것 같습니다. 조금 더 명확하게 차이를 설명하기 위해 그림을 하나 가져왔습니다. 위 예시에서 우리는 두 가지 작업(task)을 수행합니다. 각각의 작업은 3 단계의 연산으로 이뤄져있습니다. concurrency에서는 하나의 core에서 작업의 관점에서는 두 작업을 동시에 수행하지만 연산의 관점에서는 두 연산을 번갈아 수행하는 것을 알 수..