본문 바로가기
Swift/Basic

Thread

by songmoro 2024. 10. 31.
728x90

Process

  • 운영체제에서 실행되는 프로그램의 인스턴스
  • 각 프로세스는 자체 메모리 공간을 갖고, 다른 프로세스와 메모리를 공유하지 않음
  • 독립적으로 실행되며, 프로세스 간 통신은 시스템 자원(파이프, 소켓 등)을 통함

 

Context Switching

  • CPU가 새로운 프로세스를 수행하기 위해 기존의 프로세스를 교체하는 작업

 

Thread

  • 프로세스가 만들어내는 작업자
  • 프로세스와 메모리 Data 영역을 공유하고, 개별 Stack, Text 영역을 가짐
  • 사용 이유: 컨텍스트 스위칭보다 적은 비용으로 여러 개의 작업을 처리 가능

 

Thread Programming

  • 자원을 효율적으로 사용하고, 좋은 성능을 만들기 위해 스레드 필요
  • 무거운 작업을 진행하며, 동시에 다른 스레드에서 다른 작업을 처리할 수 있음
  • 스레드 전환 비용이 프로세스의 컨텍스트 스위칭보다 비용이 쌈

 

Thread 제어권

  • 해당 스레드를 점유하여 사용하며 작업을 처리하는 데 사용하는 주체
  • 스레드 제어권은 함수가 가지고 있음
  • A라는 함수를 호출할 때, A에서 사용하려는 스레드 제어권은 A 함수가 가지고 있음
    • async 등을 호출하지 않으면 일반적으로 코드 실행
    • 만약, DispatchQueue.main.async를 사용 시 해당 블록 안의 스레드 제어권은 시스템에게 넘기고, 시스템 내부에서 스케쥴링하여 처리
    • 시스템에게 스레드 제어권을 넘겨서 코드가 언제 실행될 지 모름
  • 스레드 제어권을 시스템에게 넘기기 때문에 QoS를 통해 우선순위 부여

 

 

728x90

'Swift > Basic' 카테고리의 다른 글

Data Type  (0) 2024.11.07
Concurrency  (0) 2024.11.07
GCD  (0) 2024.10.31
Memory Management  (0) 2024.10.31
Memory  (0) 2024.10.31