Skipalong's tistory
240126 TIL - Process, Thread, MultiThread 본문
얼마전에 좋아요의 동시성 문제를 테스트 할 때 멀티쓰레드 환경에서 테스트를 해 보았는데 쓰레드에 관련된 개념을 한 번 정리해야 할 것 같아서 그 내용을 정리해 보겠다.
프로세스와 쓰레드
- 프로세스는 독립적인 실행 환경을 가지며 메모리를 분리하여 운영되는 프로그램 인스턴스이다.
- 스레드는 프로세스 내에서 동작하며 메모리를 공유하는 작은 실행 단위를 나타낸다.
차이점
- 프로세스는 독립된 메모리 공간을 가지고 있으며, 스레드는 같은 프로세스 내에서 메모리를 공유한다.
- 프로세스간의 데이터 공유 및 통신은 IPC 기술을 사용해야 하지만, 스레드는 같은 프로세스 내에서 간단하게 데이터를 공유할 수 있다.
- 스레드의 생성 및 소멸 비용이 프로세스보다 낮다.
- 프로세스는 독립적으로 실행되기때문에 문제가 다른 프로세스에 영향을 주지 않지만 스레드는 오류가 발생하면 다른 스레드에도 영향을 줄 수 있다.
멀티 프로세스와 멀티 쓰레드
- 멀티프로세스는 독립적인 메모리 공간을 가지며 안정성이 높고 자원 소모가 크지만, 병렬처리에 용이하고 프로세스 간 통신이 필요하다.
- 멀티쓰레드는 같은 메모리 공간을 공유하고 경량성을 가지며 쓰레드간 전환이 빠르다. 자원 효율성이 높지만, 동시성 관리가 복잡하고 오류가 전파될 수 있다.
'TIL' 카테고리의 다른 글
240130 TIL - MockMvc (0) | 2024.01.31 |
---|---|
240129 TIL - RestDocs (1) | 2024.01.30 |
240125 TIL - Query 최적화, DB로직 최소화 (0) | 2024.01.26 |
240124 TIL - 멀티 쓰레드 테스트(좋아요) (1) | 2024.01.25 |
240123 TIL - JMeter (0) | 2024.01.23 |