swift (8) 썸네일형 리스트형 Discover Concurrency (2) - Asynchronous Task 지연시키기 다양한 비동기 작업에 딜레이를 추가하고 싶을 수 있다. 예를 들어, 다른 작업이 먼저 완료되기를 기다리거나 “debouncing” 작업을 추가하기 위한 것이다. Swift에서는 특정 시간 지연을 가진 Task를 직접 실행하는 내장 방법은 제공하지 않고 있지만, 특정 나노 초만큼 Task를 대기하도록 지시함으로써 이러한 동작을 구현할 수 있다. Task { // Delay the task by 1 second: try await Task.sleep(nanoseconds: 1_000_000_000) // Perform our operation ... } Task.sleep 은 다른 코드와 관련해 완전히 차단되지 않기 때문에 다른 sleep 메서드와는 다르다. 위 Task.sleep 에 try 키워드가 붙은 .. Discover Concurrency (1) - Task는 Swift Concurrency system내에서 어떤 역할을 할까? 개인적으로 WWDC 2022 - Eliminate data races using Swift Concurrency 에서 기본적인 Concurrency의 개념을 학습하고 나서 이 글을 읽으니 훨씬 이해하기 편했습니다. 아직 안 보셨다면 먼저 보시는 걸 추천드립니다! https://kswift.tistory.com/25 WWDC 2022 - Eliminate data races using Swift Concurrency 이번 세션의 주제는 data race 문제를 발생시키지 않고 효율적인 동시성 프로그램을 구성하는 전체론적인 Swift Concurrency의 관점을 확인할 것이다. 시작에 앞서 진행자는 concurrency를 바다에 비유한 kswift.tistory.com 스위프트의 concurrency 시스.. WWDC 2022 - Eliminate data races using Swift Concurrency 이번 세션의 주제는 data race 문제를 발생시키지 않고 효율적인 동시성 프로그램을 구성하는 전체론적인 Swift Concurrency의 관점을 확인할 것이다. 시작에 앞서 진행자는 concurrency를 바다에 비유한다. 바다에는 곳곳에서 여러 가지 일이 한 번에 진행되어 예측하기 어렵지만, Swift와 함께 신이 되어 바다를 탐색하면, 놀라운 일을 만들어 낼 수 있다고 한다. 그럼 신이 되어 보자. Task isolation Sequential - Concurrency 바다에서 task는 보트다. 즉 main workers이다. 그들은 해야 할 일이 있고 순차적으로 처음부터 끝까지 작업을 수행한다. Asynchronous - 작업은 비동기적으로 수행되고, 어느 순간이던지 await 키워드를 통해서.. Swift Concurrency - Perform asynchronous operation 위 글은 Swift Concurrency 공식문서를 참고했습니다. Concurrency에 대해서 알아보기에 앞서 우린 동시성을 가진 코드를 작성하고 있었다. 예를 들면 사진 이름 리스트를 다운로드하고, 첫 번째 사진을 다운로드하고 유저에게 보여주는 코드라면 listPhotos(inGallery: "Summer Vacation") { photoNames in let sortedNames = photoNames.sorted() let name = sortedNames[0] downloadPhoto(named: name) { photo in show(photo) } } completion handler를 통해서 위와 같은 코드를 작성했을 것이다. 그렇다면 새로운 방식의 Asynchronous 함수를 호출하는 .. WWDC 2017 - Modernizing Grand Central Dispatch Usage Parallelism and concurrency Parallelism - 밀접히 관련된 계산들의 동시 실행 Concurrency - 앱에서 동시에 실행할 독립적 요소의 구성 두 개념을 쉽게 설명하면 병렬처리(Parallelism)는 우리가 일반적으로 여러 코어를 활용하여 동시에 모두 사용하는 것이고, 동시성(Concurrency)은 단일 코어에서도 수행할 수 있다. 동시성은 애플리케이션의 다양한 작업들을 구성(개입시키는)하는 방법이다. Parallelsim with GCD concurrentPerform - 시스템의 모든 코어에서 계산을 자동으로 load balancing 하는 병렬 for loop 💡 Load balancing이란? 부하분산 또는 로드 밸런싱(load balancing)은 컴퓨터 네트.. WWDC 2016 - Concurrent Programming With GCD in Swift 3 Concurrency allows multiple parts of your application to run at the same time. Concurrency(동시성)는 우리의 앱을 동시적으로 여러 부분을 같은 시간에 실행되도록 돕는다. 시스템단에서는, 동시성을 구현하기 위해 thread를 생성한다. CPU 코어는 주어진 시간 동안 스레드를 생성할 수 있다. 그러나 동시성 구현에 대한 payoff, 혹은 페널티는 스레드를 안전하게 유지하기 힘들다는 것이다. GCD GCD는 애플의 동시성 라이브러리, 이는 모든 iOS 기기들의 multi-threaded한 코드를 생성하는데 도움을 준다. Dispatch queue and Run Loops Dispatch queue는 말 그대로 queue에 dispatc.. WWDC 2015 - Building Responsive and Efficient Apps with GCD 시작에 앞서 WWDC 2015에서 소개된 GCD관련 API는 대부분 Swift3.0 이전 버전이기 때문에 현재는 사용되지 않는 것들이 대부분이라 전체적인 흐름과 각 내부 메서드의 역할을 파악하는데 집중했습니다. OS X Snow Leopard에서 소개된 기술 그 당시 최신 기기는 듀얼 코어인 맥북 프로였는데 애플리케이션의 서로 다른 부분을 동시에 실행하면서 두 코어를 모두 활용하고 스레딩을 쉽게 만들 수 있다는 장점이었다. QoS는 시스템에 어떤 종류의 작업을 수행하는지 알려주는 방법. 이를 통해 시스템은 코드를 가장 효과적으로 실행하기 위한 다양한 resource control을 제공한다. resource control이란? 어떤 스레드를 실행할지, 어떤 순서로 실행할지를 결정 - CPU Sheduli.. [Swift] 개인프로젝트 회고 - 서버(Firebase) 를 아껴쓰기위한 노력 문제점: 처음 앱을 실행할때 피드를 불러오는중 얼마 지나지 않아 Firebase의 Storage가 동이나버림 해결을 위하여 문제점을 고안해 보았다. 첫번째, 각 피드에 보여지는 이미지는 썸네일이미지 하나이지만 서버에서 불러오는 이미지는 썸네일 이미지 를 포함한 피드에 저장된 모든 이미지들을 모두 긁어오고있다. 두번째, 사진속 피드의 이미지들은 현재 인기탭, 최신탭을 왔다갔다 할 때마다 중복된 피드들의 이미지를 서버에서 중복으로 불러오고 있다. 세번째, 당연히도 아직 이미지를 캐싱하지 않고있다. 내가 생각했던 문제점들은 이정도가 있었다. 첫번째는 현재의 로직을 리팩터링해야하고, 세번째는 새로운 기능을 추가해야되므로 첫번째 문제부터 해결하는 것이 더 효율적일것 같았다. 두번째 문제는 이미지 캐싱을 통하여 해.. 이전 1 다음