Swift Concurrency - Isolation

Tabber·3일 전

Swift Concurrency

목록 보기
7/7

격리(Isolation)란?

격리(Isolation)는 쉽게 말해서 "내 데이터는 나만 건드릴 수 있게 보호막을 치는 것"이에요.
멀티스레드 환경에서 여러 명이 동시에 한 데이터를 수정하다가 발생하는 사고 즉, 데이터 레이스 상황을 원천 봉쇄하는 개념이에요.

왜 격리가 필요한가요?

두 명의 요리사가 하나의 프라이팬(데이터)에서 동시에 요리한다고 상상해봅시다. 한 명은 소금을 넣고, 한 명은 설탕을 넣으면 요리가 망가지게 돼요.

  • Isolation이 없을 때 : 여러 스레드가 동시에 변수 count를 수정해요 -> 값이 꼬이고 크래시 발생
  • Isolation이 있을 때 : Actor 라는 보호막 안에 데이터를 넣어요 -> 한 번에 한 명만 들어와서 수정

Isolation의 핵심 규칙

Swift에서 격리는 크게 두 가지로 나뉩니다.

구분설명비유
Main ActorUI를 그리는 메인 스레드 전용 보호 구역"전시실" (관객들이 보는 곳, 항상 깔끔해야 함)
Non-isolated특정 보호 구역에 속하지 않은 자유로운 상태"창고" (누구나 들어가서 짐을 옮길 수 있는 백그라운드)
profile
iOS 정복중인 Tabber 입니다.

0개의 댓글