# OperationQueue

11개의 포스트

OperationQueue

A queue that regulates the execution of operations. 오퍼레이션 수행을 규제하는 큐입니다. Declaration Overview 오퍼레이션 큐는 오퍼레이션의 우선순위와 준비 상태에 기반해 큐에 있는 Operation을 호출합니다. 오퍼레이션을 큐에 추가한 후 오퍼레이션은 작업을 마치기 전까지 큐에 남게 됩니다. 큐에 오퍼레이션을 추가한 후 큐로부터 오퍼레이션을 직접 제거할 수 없습니다. > Note 오퍼레이션 큐는 오퍼레이션이 완료될 때까지 오퍼레이션을 유지하고, 큐는 자체로 모든 오퍼레이션이 완료될 때까지 유지됩니다. 완료되지 않은 오퍼레이션과 함께 오퍼레이션 큐를 일시정지하는 것은 메모리 누수를 초래할 수 있습니다. 오퍼레이션 큐의 사용과 관련한 더 많은 정보는 Concurrency

2023년 4월 8일
·
0개의 댓글
·
post-thumbnail

Swift Concurrency: Behind the scenes Part. 01

앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자. User Interface를 처리할 main thread가 있다. User가 구독한 news feed를 추적할 Database도 있다. 마지막으로 feed로 부터 최신 content를 받아올 네트워크 처리단이 있다. Grand Central Dispatch User가 새로운 news feed를 가져오라는 gesture를 했다고 생각해보자. GCD를 사용했을 때는 다음과 같이 처리했었다. ![](htt

2022년 6월 29일
·
0개의 댓글
·
post-thumbnail

Operation Queue

동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다. 조금더 고수준의 API로 설계된 Operation Queue는 복잡한 작업들을 수행할 때 많이 사용하곤 한다. 그럼, 구체적으로 어떤 장점이 있는지 확인해보도록 하자. 해당 글은 사내 발표와 추가 정보를 기반으로 작성하였습니다. Operation Queue > GCD를 기반으로 구현된 Objective-c class로, 고수준의 DispatchQueue이다. GCD와 마찬가지로 Thread 직접 생성 대신, 특정 작업을 정의하고 Queue에 제출하여 시스템이 이를 수행하도록 하는 방식으로 동작한다. Operation이라는 클래스를 통해 수행할 작업을 정의하고, OperationQueue에 제출하면, **Operation 객체의 우선 순위 및 준비 상태에 따라 대기중인 Operation을 실행

2022년 2월 13일
·
0개의 댓글
·
post-thumbnail

Concurrency & Thread

동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다. 항상 동시성과 같이 나오는 병렬성은 무엇이 다를까? 그리고 어떻게 동시성 프로그래밍을 할 수 있을까? iOS 애플리케이션을 만들때는 어떤 경우에 사용할 수 있을까? 다양한 것들에 대해 알아보기 이전에, iOS에서의 Thread에 대해 알아보자. 해당 글은 사내 발표와 추가 정보를 기반으로 작성하였습니다. Concurrency > 동시에 일어나는 여러가지 일 애플리케이션의 여러부분을 동시에 실행 가능하도록 한다. 하지만! 이는 논리적인 개념이다. 즉, 동시에 처리되는 것처럼 보이게 한다는 것. 그럼 정말 병렬로 일어나는 행위를 뭐라고 부를까? 이미 알고 있다. Parallelism 이라 한다. 멀티코어 환경에서는 정말 병렬로 실행될 수도 있을 것이다. ![](https://images.velog.io/images/wansook0316/post/16f1b60b-3311-43e0-be55-b9cbce4395c0/i

2022년 2월 13일
·
0개의 댓글
·
post-thumbnail

Swift 동시성 프로그래밍 - 1

누가 동시성 프로그래밍을 물어본다면 'GCD로 여러 개의 스레드를!' 이라고 외치면서 4초 동안 몇 바퀴 돌면서 물리 피해를 줘보도록 하자 > '저기요... 이번에 짠 프로그램 돌려보니까 너무 끊기는데 이거 수정 안되나요?' 라는 말을 들었을 때 어떻게 대답해야할지 잘 모르겠다면 이 게시글을 번호 순대로 찬찬히 읽어보시길 권장 드린다. > 해당 게시글은 CodeSquad의 교육자료와 raywenderlich 의 교육 컨텐츠 중 'Concurrency by Tutorials' 를 읽고 정리한 것이다. > 해당 게시글은 async / await 문법에 대해 다루지 않는다. 현재 모든 아이폰(2022.02 판매되고 있는 모델 기준)들의 코어 수는 칩의 모델 상관없이 6개다. 이 정도라면 우리가 데이터 목록을 Collection 형태로 순서에 따라 화면에 부드럽게 보여주는 정도는 기대해 볼 수 있지 않을까? 실제 이 게시물의 끝은 서울 열린데이터 광장 Open

2022년 2월 6일
·
0개의 댓글
·
post-thumbnail

[iOS] GCD / Operation

GCD에 대한 심화 이전에 학습했던 GCD / Operation의 심화 버전이며, 비동기 작업에 대한 강의를 해주시는 앨런의 강의를 듣고 기록합니다. 이해가 되지 않았던 부분을 한 번에 해소해준 정말 좋은 강의였습니다! iOS Concurrency(동시성 프로그래밍)에 대한 이해 디스패치 그룹(Dispatch Group) 여러 가지 Task들이 있는데, 비슷한 Task끼리 그룹을 만들고, **해당 그

2021년 9월 8일
·
0개의 댓글
·
post-thumbnail

[iOS] OperationQueue / GCD

해당 글은 앨런의 특강을 듣고 작성한 글입니다 모든 이미지는 앨런의 강의에서 참고하였으며, 자세한 강의 내용은 앨런 유튜브 혹은 인프런 강의 에서 볼 수 있습니다 비동기 처리가 필요한 이유?? 네트워크 통신과 비동기 처리! 앱을 만들게 되면 데이터를 서버에서 받아오는 경우가 많다. ![](https://image

2021년 5월 9일
·
0개의 댓글
·
post-thumbnail

TIL - 2021.04.28 (Wed)

오늘 공부한 주제 GCD(Grand Central Dispatch) / OperationQueue Concurrency(동시성) 프로그래밍 by Allen의 자료 읽고 모르는 것 정리하기 참고) iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 - 인프런 | 강의 Operation Queue와 DispatchQueue의 차이점 Dispatch Queue(GCD) 간단한 작업 간단한 함수(메서드) 위주의 작업 OperationQueue 내부가 GCD기반으로 구현되어 있음 작업을 객체화 GCD에서 사용할 수 있는 것 외에 여러가지 추가적 기능 1) 취소기능 2) 순서지정 3) 일시중지 / 상태추적 고민하는 점 BankManager 프로

2021년 5월 9일
·
0개의 댓글
·
post-thumbnail

TIL - 2021.04.26 (Mon)

오늘의 공부 주제 1학기를 돌아보는 퀴즈 프로세서, 프로세스 동시성 프로그래밍과 비동기 프로그래밍(Operation Queue) 1학기를 돌아보는 Quiz⭐️ 헷갈렸던 것 위주로!!! Q1 * Type의 추상화를 통해 내부 기능 구현 방식에 대해 더 쉽게 이해할 수 있다 ( X )* → 추상화를 통해 클라이언트가 내부 구조를 몰라도 사용할 수 있게 ex) print 함수의 내부 기능을 몰라도 쓸 수 있도록 **Q2

2021년 5월 8일
·
0개의 댓글
·

210429 Thu

1. 첫 번째 학습 내용: OperationQueue를 활용하여 비동기 프로그래밍 해보기 UI와 관련된 코드는 메인 스레드에서 관리해야 함 OperationQueue.main.addOperation → 메인 스레드로 보내주면 이제 이미지 버벅거리거나 화면 멈추지 않음 !! 출처: 부스트코스 iOS 앱 프로그래밍 2. 두 번째 학습 내용: maxConcurrentOperationCount Q. Operation Queue에서 비동기 어떻게 적용?!! Operation Queue에는 디스패치 큐처럼 .async나 sync 이런게 없는데? A. Operation Queue에 넣어주면 알아서 비동기로 실행됨 (= 고로 따로 비동기 설정을 해줄 필요가 없다) > When you submit a nonconcurrent operation to an op

2021년 5월 1일
·
0개의 댓글
·
post-thumbnail

iOS & Swift 공부 - OperationQueue 예제

간단한 앱에서 OperationQueue를 활용하여 특정 작업을 Main Thread 가 아닌 Sub Thread 에서 실행시키는 방법을 보자. 위 앱은 Download 버튼을 누르면 용량이 상당히 큰 이미지를 다운 받아 상단의 Image View 에 띄우는 아주 간단한 앱이다. 사진을 다운 받는 url 주소는 imageURL 상수에 넣어두고, 이를 imageData 에 넣은 후 최종적으로 image 라는 상수에 이미지 형태로 넣는 코드다. 이미지를 정상적으로 다운 받고, 마지막으로 UIImage 인스턴스를 만들었으

2021년 2월 15일
·
0개의 댓글
·