# concurrency programming

3개의 포스트

[iOS] Operation

Operation > CGD를 객체 지향적으로 재탄생시킨 high-level의 API GCD와 차이점 GCD에서 Task라고 불렀던 코드블록을 캡슐화, 객체화(타입화) 한 것 동시성 프로그래밍과 관련된 작업들이 Operation 객체로서 만들어지게 됨 Operation 객체 : 수행할 작업이 캡슐화된 객체 이런 객체 들은 각각 실행시킬 수도 있고, GCD처럼 OperationQueue에 넣어서 실행 및 관리를 해줄 수 있음 장점 재사용에 용이 타입 간의 관계를 만들어줄 수 있다 다양한 프로퍼티를 활용할 수 있다 스케쥴링에 용이 사용방법 실행할 코드 블럭을 객체화하는DispatchWorkItem과 비슷하지 않나? 🤔 DispatchWorkItem보다 Operation이 먼저 나왔다는 사실! 그리고 OperationQueue의 기능에 있어서도 차이가 있다. Operation

2022년 12월 13일
·
0개의 댓글
·

Sync & Async (동기와 비동기)

Blocking과 Non-Blocking CPU Bound 프로그램이 실행될 때 실행 속도가 CPU 속도에 의해 제한되는 것을 의미하며 정말 복잡한 수학 수식을 계산할 때 실행 속도가 느려지는 것도 cpu bound의 하나이다. I/O Bound 프로그램이 실행될 때 속도가 I/O에 의해 제한됨을 의미하며 사용자 액션에 의한 속도 뿐만 아니라 컴퓨터와 컴퓨터 간의 통신에도 발생 -> Network I/O Bound도 여기에 포함된다. Blocking Bound에 의해 코드가 멈추게 되는 현상을 의미한다. Sync(동기)와 Async(비동기) Sync 코드가 동기적으로 동작한다는 것은 작성된 순서대로 수행됨을 의미한다. Async 코드가 비동기적으로 동작한다는 것은 동시에 수행됨을 의미한다. -> 동시성 프로그래밍 Coroutine Sub-routine 서브루틴이란 하나의 진입점과 하나의 탈출점이 있는 루

2022년 10월 28일
·
0개의 댓글
·
post-thumbnail

Concurrency Programming Guide

아래의 글은 Apple 공식 문서를 보고 일부분을 정리한 글입니다. 이번 포스팅에서는 Apple에서는 어떠한 방식으로 concurrent programming을 할 수 있도록 기능들을 제공하는지와 이러한 기능들이 생기게 된 이유에 대해서 다루게 됩니다. ❗️추가로 dispatch queue, dispatch source, operation queue에 대한 자세한 내용은 다른 포스팅에서 다룰 예정입니다. 그럼 시작합니다!! Concurrency and Application Design 기존의 computing에서는 CPU clock의 speed에 의해서 컴퓨터의 단위 시간 당 일의 효율이 정해졌다. 그러나 기술의 발전과 processor들이 작아지면서 발열과 논리적인 제약이 프로세스의 maximun clock speed를 제한하기 시작했다. 그래서 다른 방법을 찾은 것이 **각각의 chip에 들어가는 processor core의 수를 증가시키

2021년 1월 6일
·
0개의 댓글
·