[programing] 동기 vs 비동기
동기 vs 비동기
-
이 글을 번역한 것임을 알려드립니다.
- 동기적으로 코드를 실행한다면, 당신은 다른 일을 하려고 움직이기 전에 계속 기다립니다.
비동기적으로 코드를 실행한다면, 당신은 이 작업이 완료되기 전에 다른 일을 하려고 움직일 수 있습니다.
즉 비동기는, 컴퓨터의 맥락에서 다른 “스레드”에서 일을 수행하는 것으로 해석됩니다. 스레드는 작업 단위로 존재하는 일련의 명령어들(코드 블록)입니다.
운영체제는 여러 스레드를 관리하고 다른 스레드로 전환하기 전에 프로세서(CPU) 시간의 일부(“슬라이스”)를 할당하여 작업을 수행 할 수 있습니다.
Core, 프로세서(CPU)는 단순히 명령을 수행하고, 한번에 두 가지 일을 하는 개념은 없습니다, 즉 한번에 한 개씩만 처리합니다. 운영체제는 여러 스레드에 시간 슬라이스를 할당하여 simulate 합니다.
=> context switch
이제, 만약 당신이 여러 개의 cores/processors를 혼합하면(multi core), 실제로 일들이 동시에 일어날 수 있습니다. OS는 한 개의 스레드를 첫번째 processor에 할당한 다음, 동일한(same time) 시간 블록을 다른 프로세스의 다른 스레드에 할당할 수 있습니다. 이 모든 것은 당신이 다른 일을 하고 있는 동안에, 운영체제가 작업 완료를 관리하도록 허락해줍니다.
비동기 프로그래밍은 동시에 수행할 때, 사물들(things)이 어떻게 연결되는지에 대한 의미론(semantics)으로 인해 복잡한 주제입니다. 비동기에 대한 수많은 기사와 책이 있습니다. 보세요!