피드로 돌아가기![[SC] Actores globales](https://tsewlmecqtvqphyhezcm.supabase.co/storage/v1/object/public/thumbnails/49cab2ae-0108-4adc-82cb-3f0ba6d691e0.webp?)
Dev.toBackend
원문 읽기
Global Actor 도입을 통한 전역 상태의 Serialized Access 보장 및 Data Race 제거
[SC] Actores globales
AI 요약
Context
동시성 프로그램에서 다수의 Task가 전역 상태에 동시 접근하며 발생하는 Data Race 문제 분석. 기존 Regular Actor의 좁은 Scope로는 분산된 전역 변수와 함수들의 실행 컨텍스트를 통합 관리하기 어려운 한계 존재.
Technical Solution
- @globalActor 어노테이션을 통한 특정 Executor 기반의 전역 실행 컨텍스트 정의
- GlobalActor 프로토콜 준수 및 shared 프로퍼티 정의를 통한 싱글톤 기반 Executor 확보
- private init() 설정을 통한 중복 인스턴스 생성 방지 및 단일 Executor 무결성 유지
- 변수, 함수, 클래스 등 다양한 코드 요소에 @ActorType 마킹을 적용하여 실행 시점을 해당 Executor로 강제 격리
- @MainActor 사례와 같이 특정 도메인(예: UI, 이미지 처리)의 작업을 Serialized 방식으로 처리하여 상호 배제 보장
실천 포인트
- 전역 상태 공유가 필요한 도메인에 @globalActor 정의 검토 - Singleton 패턴 적용 시 private init()을 통한 추가 인스턴스 생성 차단 여부 확인 - 상호 배제가 필수적인 무거운 작업(예: Image Processing)의 Serialized 처리 구조 설계