Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOS] 동시성프로그래밍 #13

Open
ujhong7 opened this issue Apr 23, 2024 · 0 comments
Open

[iOS] 동시성프로그래밍 #13

ujhong7 opened this issue Apr 23, 2024 · 0 comments

Comments

@ujhong7
Copy link
Owner

ujhong7 commented Apr 23, 2024

코어(Core):

  • 코어는 중앙 처리 장치(CPU)의 물리적인 부분을 나타냅니다. 하나의 코어는 하나의 명령어 집합을 실행할 수 있는 독립적인 처리 유닛입니다.
  • 다중 코어 시스템에서는 여러 개의 코어가 병렬로 작업을 수행할 수 있습니다.
  • 코어의 개수는 시스템의 성능에 직접적인 영향을 미치며, 병렬 처리 능력을 결정합니다.

스레드(Thread):

  • 스레드는 프로세스 내에서 실행되는 실행 흐름의 단위입니다. 하나의 프로세스에는 여러 개의 스레드가 있을 수 있습니다.
  • 스레드는 독립적인 실행 흐름을 가지며, 서로 다른 스레드 간에는 메모리를 공유할 수 있습니다.
  • 다중 스레드 프로그래밍을 통해 여러 작업을 동시에 수행하거나, 하나의 작업을 여러 개의 스레드로 분할하여 병렬로 처리할 수 있습니다.

병렬 프로그래밍

여러개의 CPU(코어)가 유사하거나 동일한 작업을 분담해서 처리하는 것 (다중코어)


Concurrent 동시성 프로그래밍

GCD, Operation, async/sync
여러 스레드를 이용하여 여러 작업을 동시에 처리하는 것
.global()

Serial 직렬 프로그래밍

하나의 스레드
순서대로 작업
기본값
.main


동기 sync /비동기 async

작업이 끝나기를 기다리냐 안기다리냐..
실행 종료시점을 알 수 있는가?
동기 → 기다림, 완전히 끝나야 다음 코드로..
비동기 → 안기다림, 다음 코드블럭 바로 실행


// 동기 
DispatchQueue.main.sync {} // 직렬 동기
DispatchQueue.global().sync {} // 동시 동기

// 비동기
DispatchQueue.main.async {} // 직렬 비동기 
DispatchQueue.global().async {} // 동시 비동기

GCD

코어와 스레드 관리하지 않아도 시스템에서 알아서 관리..
DispatchQueue 클래스
→ GCD를 사용하기 위한 대기열, 대기열들에 작업을 추가해주기만 하면 시스템은 알아서 스레드를 관리해 작업을 처리함
DispatchQueue. . { }
단일 스레드 Serial → 기본값, .main
다중 스레드 Concurrent → .global()
동기 → sync
비동기 → async


main 쓰레드

앱의 생명주기를 가지고, 앱이 실행되는 동안에는 늘 메모리에 올라와 있음
전역적으로 사용 가능한 큐
동시에 여러작업 불가능
UI 작업은 메인쓰레드에서만 작업


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant