격리(Isolation)는 쉽게 말해서 "내 데이터는 나만 건드릴 수 있게 보호막을 치는 것"이에요.
멀티스레드 환경에서 여러 명이 동시에 한 데이터를 수정하다가 발생하는 사고 즉, 데이터 레이스 상황을 원천 봉쇄하는 개념이에요.
두 명의 요리사가 하나의 프라이팬(데이터)에서 동시에 요리한다고 상상해봅시다. 한 명은 소금을 넣고, 한 명은 설탕을 넣으면 요리가 망가지게 돼요.
count를 수정해요 -> 값이 꼬이고 크래시 발생Actor 라는 보호막 안에 데이터를 넣어요 -> 한 번에 한 명만 들어와서 수정Swift에서 격리는 크게 두 가지로 나뉩니다.
| 구분 | 설명 | 비유 |
|---|---|---|
| Main Actor | UI를 그리는 메인 스레드 전용 보호 구역 | "전시실" (관객들이 보는 곳, 항상 깔끔해야 함) |
| Non-isolated | 특정 보호 구역에 속하지 않은 자유로운 상태 | "창고" (누구나 들어가서 짐을 옮길 수 있는 백그라운드) |