9-1 Swift Concurrency

STONE·2024년 12월 16일

Swift_Ios

목록 보기
29/44

주제

Swift Concurrency

비동기 코드 작성과 관련된 복잡성을 해결하기 위해 설계되었음

async/await

async는 비동기 함수임을 나타내며 await는 비동기 함수의 결과를 기다리는 역할을 합니다

func fetchData() async -> String {
    // 비동기 작업을 수행
    return "데이터"
}

async func loadData() {
    let result = await fetchData()
    print(result)
}

Task

Task는 비동기 작업을 병렬로 실행하기 위한 구조체입니다. 비동기 작업을 큐에 추가하고 작업이 완료되면 결과를 처리할 수 있습니다.

Task{
	let data = await fetchData()
    print(data)
}

actor

actor는 데이터의 동시 접근을 제어하는 객체입니다. 여러 스레드에서 동시에 접근할 수 있는 데이터를 안전하게 처리하도록 도와줍니다. actor는 기본적으로 내부 상태에 대해 동기화된 접근을 제공합니다.

actor DataManager {
    private var data: String = "초기 데이터"
    
    func updateData(newData: String) {
        data = newData
    }
    
    func fetchData() -> String {
        return data
    }
}

@MainActor

@MainActor는 특정 코드가 메인 스레드에서 실행되도록 보장하는 속성입니다. UI 업데이트와 같은 메인 스레드에서 실행해야 하는 작업에 유용합니다.

@MainActor
func updateUI() {
    // UI 업데이트 코드
}

정리

Swift Concurrency는 멀티스레딩과 비동기 처리를 더욱 안전하고 효율적으로 관리할 수 있도록 도와줍니다

profile
흠...?

0개의 댓글