싱글 & 멀티

홍석현·2023년 5월 31일
0

CS

목록 보기
1/6

싱글스레드와 멀티스레드 프로그래밍의 장점과 단점.

싱글스레드 (Single-threaded) 프로그래밍

싱글스레드 프로그래밍은 하나의 실행 흐름(thread)만을 갖는 프로그래밍 방식입니다.
다음은 싱글스레드의 장점과 단점입니다.

장점:

단순함: 싱글스레드 프로그래밍은 단일 실행 흐름을 다루므로 복잡성이 낮습니다. 따라서 디버깅과 유지보수가 상대적으로 쉽습니다.

예측 가능성: 하나의 실행 흐름으로 작업이 순차적으로 처리되므로 예측 가능성이 높습니다. 이는 동기화 문제를 줄이고 안정성을 높일 수 있습니다.

단점:

성능 저하: 싱글스레드 프로그래밍은 하나의 스레드만을 사용하기 때문에 여러 작업을 동시에 처리하지 못하고, 작업이 순차적으로 실행되어 시간이 더 걸릴 수 있습니다.

블로킹: 하나의 작업이 실행 중이면 다른 작업은 대기해야 합니다. 이로 인해 블로킹 현상이 발생하며, 다른 작업들이 실행되지 못하는 상황이 발생할 수 있습니다.

멀티스레드 (Multi-threaded) 프로그래밍

멀티스레드 프로그래밍은 여러 개의 실행 흐름을 동시에 생성하고 관리하는 프로그래밍 방식입니다. 다음은 멀티스레드의 장점과 단점입니다.

장점:

동시성: 멀티스레드 프로그래밍은 여러 작업을 동시에 실행할 수 있어 성능을 향상시킬 수 있습니다. 작업을 분할하여 여러 스레드에서 병렬로 처리할 수 있습니다.

응답성: 멀티스레드 환경에서는 한 작업이 블로킹되어도 다른 작업이 계속 실행될 수 있습니다. 이는 사용자 인터페이스의 응답성을 향상시킬 수 있습니다.

단점:

동기화 문제: 여러 스레드가 공유 데이터에 동시에 접근할 경우 동기화 문제가 발생할 수 있습니다. 이를 관리하기 위해 동기화 기법이 필요하며, 이는 복잡성을 증가시킬 수 있습니다.

병목 현상: 여러 스레드가 동시에 CPU나 다른 공유 자원을 사용하려고 할 때 병목 현상이 발생할 수 있습니다. 이는 성능 저하로 이어질 수 있습니다.

대표적인 싱글스레드와 멀티스레드 언어

싱글스레드 언어: Python, Ruby, JavaScript (브라우저 환경에서는 단일 스레드로 동작) node : 멀티스레드 이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글스레드로 표현(14 버전부터 멀티스레드 다룰 수 있음)

멀티스레드 언어: Java, C++, C#, Python (멀티스레드를 지원하는 라이브러리 포함)

싱글스레드와 멀티스레드 프로그래밍은 각각의 상황과 요구사항에 따라 선택되어야 합니다. 작업의 복잡성, 성능 요구사항, 동시성의 필요성 등을 고려하여 적절한 방식을 선택하는 것이 중요합니다.

또한 초보자의 경우 싱글스레드를 사용하면 어떻게든 완성은 시킬 수 있지만 멀티스레드의 경우 아예 완성조차 시키지 못하는 경우도 종종 발생하기 때문에 그만큼 숙련도에 따라 뽑아낼수있는 퍼포먼스의 차이가 나타난다고 볼 수 있습니다.

profile
Front-end to Full-stack

0개의 댓글