TIL

taetae·2023년 4월 14일
0

내배캠 TIL

목록 보기
41/48
post-thumbnail

동기 (Synchronous)와 비동기 (Asynchronous) 코드 실행 방식

동기 코드 실행 방식은 코드를 순서대로 실행하는 방식이며, 다음 코드가 실행되기 전에 현재 코드가 완료될 때까지 기다린다. 이는 일반적으로 코드의 실행이 예측 가능하고 간단하다는 장점이 있지만, 코드 실행 중에 지연이 발생하면 전체 프로그램이 지연될 수 있어서 대규모 응용 프로그램에서는 성능 문제가 발생할 수 있다.

반면에 비동기 코드 실행 방식은 코드가 동시에 실행될 수 있도록 한다. 다음 코드가 실행되기 전에 현재 코드의 완료를 기다리지 않으며, 다른 코드가 실행되는 동안 현재 코드도 실행된다. 이는 프로그램의 효율성을 높일 수 있으며, 여러 작업을 동시에 처리하거나 실행이 끝날 때까지 기다리지 않고 다음 작업을 수행하는 경우에 유용하다. 그러나 비동기 코드는 예측하기 어렵고 복잡할 수 있으며, 디버깅이 어려울 수 있다.


프로세스 (Process)와 스레드 (Thread)의 차이점

프로세스는 하나의 독립적인 프로그램을 나타내는 것이고, 스레드는 하나의 프로세스 안에서 여러 개의 실행 흐름을 나타내는 것이다.

프로세스는 각자 독립된 메모리 공간을 가지고 실행되기 때문에, 하나의 프로세스가 문제가 생겨도 다른 프로세스에 영향을 주지 않는다. 반면에 스레드는 프로세스의 메모리 공간을 공유하기 때문에, 하나의 스레드가 문제가 생기면 해당 프로세스 내의 모든 스레드에 영향을 미칠 수 있다.

또한, 프로세스는 각자 독립적으로 실행되기 때문에 각각의 프로세스는 자신만의 리소스를 할당받아 사용하게 된다. 반면에 스레드는 하나의 프로세스 내에서 실행되므로, 프로세스의 리소스를 공유해서 사용하게 된다.

그리고 스레드는 프로세스 안에서 다양한 작업을 동시에 처리할 수 있는 장점이 있다. 예를 들어, 웹 브라우저에서는 스레드를 이용하여 여러 개의 탭을 동시에 열 수 있고, 파일 다운로드나 이미지 로딩 등과 같은 작업을 백그라운드에서 처리할 수 있다.

좀 더 쉬운 비유

프로세스는 하나의 독립적인 집을 나타내고, 스레드는 그 집 안에서 활동하는 가족 구성원들이다. 각 집은 독립된 공간을 가지고 있어서 다른 집과는 완전히 분리되어 있다. 마찬가지로, 각 프로세스는 독립된 메모리 공간을 가지고 있어서 다른 프로세스와는 완전히 분리되어 있다.

반면에 가족 구성원들은 같은 집 안에서 함께 생활하면서, 집의 공간을 공유한다. 이와 같이, 스레드는 같은 프로세스 안에서 함께 동작하면서, 프로세스의 메모리 공간을 공유한다.

또한, 가족 구성원들은 서로 다른 작업을 분담해서 처리할 수 있다. 예를 들어, 어머니는 요리를 하고, 아버지는 신문을 읽고, 자녀는 숙제를 하면서 같은 집 안에서 활동할 수 있다. 이와 같이, 스레드는 프로세스 안에서 서로 다른 작업을 동시에 처리할 수 있다.

그리고 각 집은 독립적인 에너지와 자원을 사용하면서, 함께 생활한다. 이와 같이, 각 프로세스는 독립적으로 CPU, 메모리, 파일 등의 시스템 리소스를 사용하면서, 함께 운영체제에서 실행된다.

0개의 댓글