swift 동기/비동기

syeony·2024년 8월 8일
0

swift

목록 보기
8/12

동기 작업 sync

  • swift는 절차적 언어라 기본적으로 동기적으로 실행된다
  • 하나의 작업이 끝날때까지 다음 작업이 실행되지 않는다
  • 디버깅이 쉽고 흐름 이해가 쉽다

비동기 작업 async

  • 즉시 다음 코드로 넘어가면서 작업이 비동기적으로 실행
  • 작업이 완료되기 전에 다음 작업이 실행될 수 있다
  • 기본적으로는 동기작업이 모두 수행된 다음에 비동기작업으로 넘어간다
  • 복잡도가 높아질 수 있으며, 스레드 간의 동기화 문제를 잘 관리해야한다
func func(){
	print("1 start")
	
	DispatchQueue.global().async{
	// 비동기 작업
		print("1 end")
	}
	
	print("2 start")
	
	print("2 end")
	
}

결과

1 start
2 start
2 end
1 end

ex) 유저정보 가져올때 비동기로 백그라운드로 … escaping클로저 이용

메인 스레드와 백그라운드 스레드

  • 메인 스레드: 앱의 UI와 사용자 입력을 처리하는 스레드 (ex. label.text)
  • 백그라운드 스레드: 시간이 오래 걸리는 작업, 네트워크 요청, 데이터베이스 작업 등

멀티태스킹, 성능최적화

주요 DispatchQueue

  • main - UI작업들
  • global - 시간이 오래 걸리는 작업들

global에서 UI작업을 수행하면 보라색 에러가 난다

참고

https://github.com/syeony/iOS_study/blob/main/UIKit_leejung/DispatchQueue/DispatchQueue/ViewController.swift
동기/비동기에 대해서 인프런 강의를 들으며 따라 쳐본 코드이다.
sync와 async에 대해서 더 잘 이해할 수 있었다.

profile
모바일 어플리케이션, cross platform과 iOS에 관심이 많은 개발자 오승연입니다

0개의 댓글