Swift에서 동기와 비동기의 차이

2024. 11. 30. 23:20·App Development/Swift

동기 (Synchronous)

동기는 작업이 순차적으로 실행되는 방식으로, 하나의 작업이 완료될 때까지 다음 작업이 대기합니다.

  • 코드가 작성된 순서대로 실행됩니다.
  • 작업이 완료될 때까지 호출한 스레드가 차단됩니다.
  • 실행 흐름이 직관적이나 시간이 오래 걸리는 작업이 있다면 성능에 영향을 줄 수 있습니다.

동기 예제 코드

print("start")
Thread.sleep(forTimeInterval: 2) // 2초 대기
print("end")

// 출력
// start
// (2초 후)
// end

 

비동기 (Asynchronous)

비동기는 작업을 시작한 뒤 다른 작업을 동시에 실행할 수 있는 방식입니다. 작업이 완료되면 나중에 결과를 반환합니다.

  • 호출한 스레드가 차단되지 않고, 다음 작업이 바로 실행됩니다.
  • 주로 콜백(closure) 또는 async-await을 통해 결과를 처리합니다.
  • 네트워킹, 파일 읽기/쓰기 등 시간이 오래 걸리는 작업에 적합합니다.

비동기 예제 코드

print("start")
DispatchQueue.global().async {
	sleep(2)
    print("Task Completed")
}

print("end")

// 출력
// start
// end
// 2초 후
// Task Completed

Swift의 비동기 프로그래밍 방식

  • GCD(Grand Central Dispatch): DispatchQueue를 사용하여 작업을 비동기로 실행
  • OperationQueue: 비동기 작업을 관리하는 고급 API
  • Async/Await: 비동기 작업을 동기 코드처럼 작성할 수 있는 최신 방식

Async/Await 예제는 다음과 같습니다.

func fetchData() async {
	print("Fetching data...")
    try? await Task.sleep(nanoseconds: 2_000_000_000) // 2초 대기
    print("Data fetched")
}

Task {
	await fetchData()
}

print("other work")

// 출력
// Fetching data...
// Other work
// (2초 후)
// Data fetched
저작자표시 비영리 동일조건 (새창열림)

'App Development > Swift' 카테고리의 다른 글

Swift의 고차함수  (0) 2025.01.02
Swift의 에러 처리 (Error handling)  (0) 2024.12.06
Swift의 매개변수(parameter) 정리하기  (0) 2024.11.30
Swift에서의 completion  (0) 2024.11.26
Swift의 Closure 란?  (0) 2024.11.25
'App Development/Swift' 카테고리의 다른 글
  • Swift의 고차함수
  • Swift의 에러 처리 (Error handling)
  • Swift의 매개변수(parameter) 정리하기
  • Swift에서의 completion
Genie Choi 지니 초이
Genie Choi 지니 초이
  • Genie Choi 지니 초이
    Genie World
    Genie Choi 지니 초이
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • Genie (3)
      • Projects (6)
      • Up-to-date learning (0)
      • App Development (10)
        • React Native (1)
        • Swift (9)
      • Marketing Tool (1)
        • Mobile Measurement Platform (1)
        • CRM Marketing (0)
      • Linux (5)
      • AWS (2)
        • EC2 (1)
        • Route 53 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Genie Choi 지니 초이
Swift에서 동기와 비동기의 차이
상단으로

티스토리툴바