clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅅ
  • uikit
  • Swift
  • Q

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

iOS. 동시성프로그래밍(2) - 동기, 비동기, 직렬, 동기
IOS

iOS. 동시성프로그래밍(2) - 동기, 비동기, 직렬, 동기

2023. 3. 13. 16:20

💥 비동기(Async) vs 동기(Sync)

 

❓비동기(Async)

  • 작업을 다른 스레드로 보낸 후 작업이 끝나기를 기다리지 않는다.
  • 기다리지 않기 때문에 다음 작업을 진행할 수 있다.

 

❓동기(Sync)

  • 다른 스레드에 작업을 시키고, 끝날 때까지 기다린다.
  • 작업이 끝날 때까지 다른 작업을 시작할 수 없다.


 

💥 직렬(Serial)큐 vs 동시(Concurrent)큐

큐의 특성에 따라 나뉘어짐

 

❓직렬(Serial)큐

  • Queue에서 받은 테스크들을 단 하나의 다른 쓰레드로 보내는 큐
  • 한 번에 하나의 테스크를 순차적으로 실행
  • 순서가 중요한 작업을 처리할 때
  • Main Thread에서 사용되는 Queue(Main Queue)

 

❓동시(Concurrency)큐

  • Queue에서 받은 테스크들을 다른 여러개의 쓰레드로 보내는 큐
  • 여러개의 쓰레드에서 동시에 일 처리를 하게 분산처리
  • 각자가 독립적이지만 유사한 여러개의 작업을 처리할 때 사용

ㅇㅇㅇㅇㅇ

 

❗️코드로서의 예시

func task1() {
	print("Task 1 시작")
    sleep(1)
    print("Task 1 완료")
}

func task2() {
    print("Task 2 시작")
    print("Task 2 완료")
}

func task3() {
    print("Task 3 시작")
    sleep(4)
    print("Task 3 완료")
}

func task5() {
    print("Task 5 시작")
    print("Task 5 완료")
}



// 비동기 작업
DispatchQueue.global().async {
	task1()
}

DispatchQueue.global().async {
	task2()
}

DispatchQueue.global().async {
	task3()
}

task1()
task2()
task3()
task4()
task5()

// Task 1 시작
// Task 2 시작
// Task 3 시작
// Task 2 완료
// Task 1 완료
// Task 3 완료


// 동기 작업
DispatchQueue.global().sync {
	task1()
}

DispatchQueue.global().sync {
	task2()
}

DispatchQueue.global().sync {
	task3()
}

// Task 1 시작
// Task 1 완료
// Task 2 시작
// Task 2 완료
// Task 3 시작
// Task 3 완료

 

저작자표시 비영리 동일조건 (새창열림)
    'IOS' 카테고리의 다른 글
    • iOS. 디스패치큐(GCD) 사용시 주의해야할 사항
    • iOS. GCD의 개념과 Dispatch큐(Queue)종류? Qos
    • iOS. 동시성(Concurrency) 프로그래밍(1) - 동시성프로그래밍이란? feat. 병렬/동시
    • iOS . 오토레이아웃 - Aspect Ratio
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바