일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AVFoundation
- WWDC 2021
- App Clip
- Xcode Cloud
- SF Symbols 3.0
- Hand Action Detect
- detent
- User Enrollment
- SWiFT
- METAL
- MDM
- async
- profile
- concurrency
- AR Quick Look
- Mac
- SF Symbols
- NSUserActivity
- CoreML
- Object Capture
- actor
- DooC
- Hand Pose Detect
- AppleEvent
- swiftUI
- Reality Composer
- Physical Audio
- Xcode Organizer
- ProRAW
- DriverKit
- Today
- Total
목록actor (4)
nyancoder
새 Swift버전에 Actor가 추가되면서 여러 스레드에서 접근했을 때 발생할 수 있는 여러 동시성 문제들을 해결하는 좋은 해결책 중 하나로 관심을 받고 있습니다. 기존에도 동시성 문제를 해결하기 위해서 각종 Lock이나 DispatchQueue 등을 활용하여 문제를 해결할 수 있었지만, Actor를 사용하면 컴파일러가 근본적으로 동시성 문제를 확인하고 오류를 일으킬 수 있습니다. Actor의 역할은 크게 세 가지로 볼 수 있습니다. 코드 생성 단계 - actor내에 선언된 함수에 async를 자동으로 적용해주고, actor의 구현에 필요한 코드를 자동으로 생성해 줍니다. 컴파일 단계 - 동시성 문제가 발생할 수 있는 코드를 작성하면 컴파일러가 오류를 일으켜서 수정하도록 해 줍니다. 실행 단계 - 각 코..
문제 상황 Swift의 Actor에서 다른 Actor의 함수를 접근할 때 발생하는 오류 중 하나로 아래와 같이 발생한다. 해결 방안 해당 함수를 async로 선언하면 발생하지 않는다. actor TestActor { func foo(testActor: TestActor) async { await testActor.bar() } func bar() { } } 또는 아래와 같이 async 블럭으로 감싸도 된다. actor TestActor { func foo(testActor: TestActor) { async { await testActor.bar() } } func bar() { } } 연관 자료: WWDC 2021 - Protect mutable state with Swift actors WWDC 20..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10254/ 이 장에서는 Swift 동시성 모델에 대한 이해와 성능 향상을 위한 방법에 대해 알아보겠습니다. Threading Model 많은 양의 데이터를 비동기로 업데이트하는 코드는 수많은 스레드를 생성할 수 있습니다. CPU 코어의 개수를 넘는 스레드는 성능 문제를 일으킵니다. 많은 스레드는 각각의 메모리 공간을 가지고 있어야 하기 때문에 메모리 오버헤드를 가집니다. 많은 스레드가 생성되면 많은 context switching이 발생하므로 CPU가 비효율 적으로 동작합니다. Concurrency in Swift Swift의 async/await는 매번 새 스레드를 생성하지 않기 때문에 Context ..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10133/ 이 장에서는 Swift에서 새로 지원되는 Actor의 필요성과 활용에 대해서 알아봅니다. 기존 방식의 문제점 둘 이상의 스레드에서 동일 데이터에 접근할 때, 동시성 안정성이 보장되지 않아 예상하지 못한 결과를 얻을 수 있습니다. 기존에 이러한 문제를 컴파일 단계에서 회피하기 위한 수단으로 value타입을 사용하는 방법도 있습니다. 이 이외에 여러 스레드에서 동시에 접근되어야 하는 데이터가 손상되지 않도록 하기 위해서 아래의 방법을 사용할 수 있지만, 컴파일 단계에서 검증하는데 어려움이 있는 경우가 있었습니다. Atomic Lock Serial dispatch queues Actor Actor는..