16건의 항목

  • 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.

  • 동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.

  • 여러 일을 여러 사람이 각자 동시에 하는 것 행위도 여러개, 주체도 여러개 가짜 병렬 (논리적 개념) 코어는 하나임에도 두개의 서로 다른 동작을 번갈아가며 처리하여 동시에 수행하는 것 “처럼” 보이는 것 소프트웨어 수준으로 처리 Thread, Actor 등 Reference Parallelism .

  • 개념 특정 작업이 전역적으로 단일 스레드에서 실행되도록 보장하는 장치 우리는 @MainActor라는 키워드만 추가하게 되면 main thread에서 동작한다는 것을 보장할 수 있다.

  • WWDC 24의 Swift 6 migration guide를 정리해본다.

  • Data-race의 문제를 swift concurrency (compiler constraint)를 통해 해결하지 않고, 타 매커니즘을 통해 해결한 경우, 이에 대해 에러를 내뿜지 않도록 하는 키워드 swift concurrency는 compiler가 data-race에 대한 취약점을 파악할 수 있다는 점에서 유용하다.

  • 동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다.

  • 이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.

  • Swift 5.5에서 소개된 Async/Await에 대해 공부해본다. 비동기 처리가 필요한 이유 thumbnail을 fetch하는 method가 있다고 하자.

  • What is AsyncSequence 용량이 좀 큰 csv 데이터를 받는다고 하자. 만약 해당 파일을 모두 받은 뒤에 데이터를 처리한다고 한다면, 오랜 시간 뒤에나 가능할 것이다. 여기서 asyncSequence를 사용하면 굉장히 반응성있는 결과를 낼 수 있다.

  • AsyncSequence를 공부하다 후반에 나온 AsyncStream을 이해하지 못해 문서를 읽어본다. AsyncStream 이전 글에서 AsyncSequence를 Custom하게 만드는 방법까지 알아보았다.

  • Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까? Calling Asynchronous Functions in Parallel 앞의 글에서 보았듯이 await 키워드를 사용하면, 다음코드로 넘어가기 전에 호출자는 해당 작업을 마치는 것을 기다린다.(suspend) let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNam...

  • Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.

  • Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.

  • 앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자.

  • 앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.