Home [Flutter] Thread 개념정리
Post
Cancel

[Flutter] Thread 개념정리

Thread 개념정리

Thread란?

쓰레드는 컴퓨터 프로그램 내에서 실행되는 흐름의 단위이다. 컴퓨터 프로그램이 실행될 때, 적어도 하나의 쓰레드(주 쓰레드)를 가지고 시작하고 프로그램이나 프로세스 안에서 독립적으로 실행되는 여러 작업을 가능하게 해준다.

쓰레드 주요 특징:

  1. 경량 프로세스: 쓰레드는 프로세스 내에서 상대적으로 적은 리소스를 사용하여 작업을 수행한다. 이는 쓰레드가 프로세스의 리소스와 메모리 공간을 공유하기 때문이다.

  2. 독립적 실행 단위: 각 쓰레드는 프로세스 내에서 독립적으로 실행되며, 자신만의 실행 경로와 스택을 가진다. 이를 통해 병렬 처리가 가능하다.

  3. 효율성: 쓰레드는 프로세스보다 생성과 관리가 더 경량화되어 있어, 멀티태스킹을 더 효율적으로 수행할 수 있다.

  4. 자원 공유: 같은 프로세스 내의 쓰레드들은 메모리와 자원을 공유한다. 이 때문에 쓰레드 간 통신과 데이터 공유가 용이하지만, 동시 접근으로 인한 문제가 발생할 수도 있다.

쓰레드를 사용하면 여러 작업을 동시에 처리할 수 있어 애플리케이션의 응답성과 효율성을 높일 수 있지만, 쓰레드를 사용할 때는 동기화 문제와 데이터 무결성 문제를 고려해야 합니다.


메인 스레드(Main Thread):

메인 스레드는 주로 사용자 인터페이스(UI)와 관련된 작업을 담당한다. 이는 사용자의 입력에 대한 반응, UI의 실시간 업데이트 및 다양한 이벤트의 처리를 포함한다.

예시:

  1. 사용자 인터페이스 렌더링: 사용자가 앱을 조작하는 동안, 모든 UI 구성 요소(버튼, 텍스트, 이미지 등)는 메인 스레드에서 렌더링된다. 사용자의 조작에 따라 화면이 갱신되는 과정도 메인 스레드에서 이루어진다.

  2. 이벤트 처리: 사용자의 버튼 클릭, 스크롤 등의 동작은 메인 스레드에서 처리된다. 이 과정에서 UI의 변화가 발생할 수 있다.

백그라운드 스레드(Background Thread):

백그라운드 스레드는 사용자 인터페이스와 직접적인 연관이 없는 작업을 담당한다. 이러한 작업은 대개 시간이 많이 소요되거나 복잡한 처리를 요구하는 경우가 많아, 메인 스레드의 차단을 방지하기 위해 사용된다.

예시:

  1. 데이터 로딩: 대용량 데이터의 다운로드나 복잡한 데이터베이스 쿼리 같은 작업은 백그라운드 스레드에서 처리된다. 이러한 작업들은 시간이 오래 걸릴 수 있으며, 메인 스레드에서 이루어질 경우 UI의 응답성이 저하될 수 있다.

  2. 파일 I/O 작업: 파일 시스템에서의 데이터 읽기/쓰기 작업 역시 백그라운드 스레드에서 진행된다. 이를 통해 메인 스레드의 UI 작업에 영향을 주지 않으면서 필요한 데이터 처리가 가능하다.


메인 스레드와 백그라운드 스레드의 중요성:

  • 성능 및 반응성: 메인 스레드와 백그라운드 스레드를 효과적으로 사용하는 것은 애플리케이션의 성능과 반응성에 직접적인 영향을 미친다. 백그라운드 스레드에서 시간이 많이 걸리는 작업을 처리함으로써 메인 스레드는 사용자와의 상호작용과 UI 업데이트에 집중할 수 있다.

  • 사용자 경험: 사용자는 애플리케이션이 빠르고 부드럽게 반응하는 것을 선호한다. 메인 스레드가 차단되어 UI가 멈추거나 느려지는 현상은 사용자 경험을 저하시킬 수 있다. 백그라운드 스레드의 적절한 사용은 이러한 문제를 방지할 수 있다.

This post is licensed under CC BY 4.0 by the author.