안녕하세요 Pingu입니다.🐧 오늘은 Swift 5.5에서 공식문서에 추가된 내용인 Concurrency를 읽고 정리한 글을 써보려고 합니다. Swift 공식 문서 - Concurrency Concurrency Swift 5.5부터는 built in 방식으로 비동기 코드, 병렬 코드를 지원합니다. 비동기 코드는 일시 정지되었다가 나중에 다시 시작할 수 있지만 한 번에 프로그램의 한 부분만 실행하게 됩니다. 비동기로 코드를 작성하게 되면 UI 업데이트 같은 작업을 진행하면서 네트워크에서 데이터를 가지고 오거나 디스크에서 파일을 가지고 오는 등, 비교적 오래 걸리는 작업을 계속해서 실행할 수 있습니다. 즉 한 시점에 하나의 일만 하는 코드가 비동기 코드입니다. 병렬 코드의 경우에는 한 시점에 여러개의 코드들..
안녕하세요 Pingu입니다. 지난 글에서는 Concurrency(동시성)에서 Synchronization(동기화)를 구현하기 위한 condition variable(조건 변수)에 대해 알아봤었습니다. 동기화란 스레드 간에 실행 순서를 정해 줄 수 있도록 하는 것으로 유명한 producer/consumer 문제로 적용해서 알아봤었습니다. 이번 글에서는 그 유명한 semaphore에 대해 알아보고 이를 producer/consumer, reader/writer, dining Philosophers(식사하는 철학자 문제)와 같은 유명한 문제들에 적용해보며 실제로 좋은지에 대해 알아보려고 합니다. Semaphore는 간단하게 말하면 지금까지 알아본 Lock, condition variable의 역할을 모두 할 ..
안녕하세요 Pingu입니다. 지난 글을 마지막으로 메모리 가상화를 끝내고! 드디어 OSTEP에서의 큰 2번째 단원인 Concurrency, 동시성에 대해 알아보려고 합니다. 이번 글에서는 동시성을 구현하기 위해 사용하는 Thread(스레드)라는 녀석에 대해 알아보려고 합니다. 스레드는 정말 자주 들어본 개념인 것 같은데 이번 글에서 한 번 구체적으로 무엇인지에 대해 알아보면 좋을 것 같아요. 제가 참고하고 있는 OSTEP 책에서는 Chapter 26 Concurrency and Threads 부분 입니다! Concurrency: An Introduction 지난 글까지는 OS가 수행하는 abstraction(추상화)에 대해 살펴봤습니다. CPU, 메모리를 각 프로세스마다 존재하는 것처럼 해주는 가상화에 ..
이번 글에서는 동시성 프로그래밍에서 스레드를 어떻게 쉽게 사용할지에 대해 알아보자 Apple Developer Documents - Migrating Away from Threads Migrating Away from Threads Grand Central Dispatch와 작업 객체를 사용에 효율적이게 기존의 스레드 코드를 수정하는 방법에는 여러 가지가 있다. 대부분의 경우 스레드를 사용하지 않는 것은 불가능하지만 스레드를 대체하도록 구현한다면 성능이 많이 향상될 수 있다. 특히 스레드 대신 dispatch queue, operation queue를 사용하면 몇 가지 장점이 있다. 프로그램의 메모리 공간에 스레드 스택을 저장하기 위해 필요한 메모리를 줄인다. 스레드를 작성하고 구성하는 데 필요한 코드를..
이번 글은 Apple에서 과거에 올린 글이기 때문에 Objective-C로 코드가 구성되어있는데 Swift로 구현하는 방법은 여기를 참고해주세요!. Apple Developer Document - Operation Queues Operation Queues Cocoa Operation은 비동기적으로 실행하려는 작업을 객체 지향 방식으로 캡슐화한다. 작업들은 operation queue와 함께 실행되거나 자체적으로 실행되도록 설계된다. OS X, iOS의 Cocoa 기반 프로그램들에서 일반적으로 사용되는 작업들은 Objective-C 기반이다. 이번 글에서는 Operation을 정의하고 사용하는 방법에 대해 알아보자 About Operation Object 작업 객체는 NSOperation 클래스의 인스턴..
Apple Developer Document - Concurrency and ApplicationDesign Concurrency and Application Design 컴퓨터가 처음 생겼을 때는 수행할 수 있는 단위 시간당 최대 작업량이 CPU의 클럭 속도에 의해 결정되었다. 이젠 기술이 발전하여 열과 기타 물리적 제약에 의해 프로세서의 최대 클럭 속도가 제한되기 시작했다. 칩 제조회사는 칩의 성능을 향상할 수 있는 다른 방법을 모색했고 각 칩의 프로세서 코어 수를 늘리는 게 그 해결책이었다. 코어 수를 늘리면 단일 칩이 CPU 속도를 높이거나 칩 크기, 열 특성을 변경하지 않아도 초당 더 많은 명령을 실행할 수 있었다. 이렇게 변한 칩들의 늘어난 코어를 어떻게 활용할 수 있을까? 여러 코어를 활용하..
iOS 앱 개발을 할 때 OperationQueue를 사용하여 동시성 프로그래밍을 하기 위해서 필요한 내용을 공부할 수 있는 문서이다. Apple Developer Document - Concurrency Programming Guide Introduction Concurrency(동시성)이란 여러 가지 일이 동시에 발생한다는 개념이다. 멀티 코어 CPU의 확산과 각 프로세서의 코어 수가 많이 증가한 현재 개발자는 이를 활용할 수 있는 새로운 방법이 필요하다. iOS와 같은 운영 체제는 여러 프로그램을 병렬로 실행할 수 있지만 대부분의 프로그램은 백그라운드에서 실행되며 프로세서 시간이 거의 필요 없는 작업을 수행한다. 사용자의 관심을 끌고 컴퓨터를 바쁘게 하는 것은 foreground라는 녀석들이다. 프..
공식문서 Apple Developer Document - Operation Operation 단일 task(작업)과 관련된 코드 및 데이터를 나타내는 추상 클래스 Declaration class Operation: NSObject Overview Operation 클래스가 추상 클래스이기 때문에 직접적으로 사용하는 것이 아닌 서브 클래스나 시스템 정의 서브클래스(NSInvocationOperation, BlockOperation) 중 하나를 사용하여 사용 가능하다. 추상 클래스이지만 Operation의 기본 구현에는 작업의 안전한 실행을 조정하는 중요한 논리가 포함된다. 이러한 built-in logic이 있기 때문에 시스템 객체와 올바르게 작동하는데 필요한 glue code보다 실제 작업 구현에 집중할..
- Total
- Today
- Yesterday
- 알고리즘
- DP
- BFS
- 문법
- 프로그래밍
- design
- IOS
- operator
- 테이블뷰
- Swift
- 백준
- Xcode
- OSTEP
- 아이폰
- 자료구조
- mac
- Publisher
- System
- 코테
- OS
- 코딩테스트
- 동시성
- 앱개발
- Apple
- 스위프트
- document
- Combine
- pattern
- operating
- dfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |