싱글 스레드 vs 멀티 스레드

Seung·2022년 2월 27일
0

😄 싱글 스레드 (순차 실행)

  • 하나의 프로세스에서 하나의 스레드로(메인 스레드)만 작업을 처리하는 것

  • 스레드가 하나이기 때문에 A, B 작업이 있으면 A를 먼저 끝낸 후에 B를 수행할 수 있다 (순차 수행)

  • 하나의 스레드만 존재하므로 스레드끼리 자원 접근에 대한 동기화를 신경 쓰지 않아도 된다는 장점이 있다

  • 작업 시간이 오래 걸리는 작업을 하는 경우 이 작업이 완료되어야 다음 작업을 수행할 수 있기 때문에 사용자 입장에서는 렉 걸린 것처럼 기다려야 하는 단점이 있다 (자원의 낭비가 심해짐)

  • 대표적으로 JavaScript가 Single Threaded Language라서 멀티스레딩을 못하지만 JavaScript가 동작하고 있는 브라우저 안의 Web APIS를 이용하게 되면 멀티스레딩이 가능하다 (ex setTimeout, setInterval, fetch, eventListener 등)

🥰프로세스, 스레드에 대한 자세한 설명은 제 벨로그에 있습니다🥰
🥰setTimeout, setInterval, eventListener에 대한 자세한 설명은 제 벨로그에 있습니다🥰


😄 멀티 스레드 (병렬 실행)

  • 하나의 프로세스 안에서 여러개의 스레드가 동시다발적으로 일어나는 것

  • 여러개의 스레드로 각각 하나의 작업을 처리하도록 할 수 있다 (병렬 수행)

멀티 스레드의 장점

  • 시스템 자원 소모 감소 (자원의 효율성 증대)

  • 시스템 처리량 증가

  • 스레드는 프로세스 내의 Stack 영역을 제외한 code, heap, data 영역을 공유하기 때문에 프로그램 응답 시간 단축 가능 (Stack 영역은 스레드별로 고유하게 할당받음)

멀티 스레드의 단점

  • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다

  • 자원 공유의 문제가 발생할 수 있다 (code, data, heap 영역을 공유함로 스레드끼리 서로 접근하여 데이터를 수정하는 등 문제 발생 할 수 있다)

😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍

profile
지적은 제 발전의 원동력입니다. 사소한 것이라도 지적해주세요 :)

0개의 댓글