저번 시간에는 아래의 세가지 동시성 문제 중 첫번째 경쟁 상태에 대해 알아보았어요!
경쟁 상태란 “두 개 이상의 스레드를 사용하면서, 동일한 메모리 접근 등으로 인해 발생할 수 있는 문제”로 정의 내린 후, 두 개의 스레드가 동일 메모리에 접근하여 자료의 일관성을 해치는 예시를 살펴보았습니다.
그럼 이번 시간에는 경쟁상태에 대한 해결 방안에 대해 다뤄볼건데요! 자원에 다수의 스레드가 접근해서 문제가 되는거니까 한번에 한개의 스레드만 접근 가능하도록 처리하면 되겠죠?! (Thread-safe)
그럼 경쟁 상황이 …
대박대박대박버거~~~~ 개-하! (개발자들 하이라는 뜻)
이게 몇만년만의 GCD람요~~!! 사실 글 초안은 좀좀따리 써놨었는데 주제가 주제인지라.. ㅎㅎㅎ 기약 없이 미루다보니 벌써 두달이 지났네유 ◠‿◠ .. ㅎㅎ (사실 저는 예전에 강의도 다 들음여~~!!) 튼 아무래도 글이 길어지면 더 안쓰게 되는 것도 있는거 같아서 끊어 쓰려고요 ㅎ
저번 시간에는 DispatchSemaphore
에 대해 다뤘는데 ㄱ나니..? (아련) 흠 사실 저도 안난답니다!
하지만 괜찮아여 기억 안나는건 또 보면 되는거고 오늘은 새로운 마음가짐으로 동시성 문제를 다룰거니까여~~ 그럼 각설하고 고고링~!
우리는 2강? 3강?에서 concurrency 의 …
UIView()
가 UIView
의 initializer가 아니라구여?안녕하세여 여러분. 흠 원래 required init?(coder: NSCoder)
에 대해 쓰려다가 또 딴 길로 새버렸네유. 이 내용은 다른 곳에서도 충분히 잘 설명되어있는 것 같아서 그건 TIL에 개인적으로 정리하기로 하고..!
지금까지 UIView()
잘 써오셨나요?? 거두절미하고 UIView
의 문서에서 initializer 를 보자요.
맞아여 이렇게 두개예요. 읭?? 근데 나는 UIView()
이렇게도 써왔는데?!!?!?! 왜 init()
에 대한 설명은 없는겨..?
흠.. 제목이 딱 맘에 들진 않네유.. 부제에 집중해주세요! (이걸 제목으로 쓰기엔 너무 길었어요 흑흑)
튼 오늘은
Value Type은 cow를 한다면서 왜 Array만 동일 instance에 대해 같은 주소를 반환할까?
에 대한 이야기입니다. 무슨 말이냐고요? 일단 스크롤을 내려봅시다 ㅎㅎ 그럼 고고링~!
얼마전 Swift의 Type에 대해 공부하다가 OptimizationTips 문서에서 기본 Value Type은 copy on write 최적화를 사용한다는 것을 보았습니다.
All standard library containers in Swift are value types that use COW (copy-on-w …
Swift의 Type 은 크게 두 카테고리로 나뉩니다.
struct
, enum
, tuple
등Int
, Float
, Double
, Bool
, String
, Array
, Dictionary
, Set
등은 모두 struct 형태로 구현)class
, function
, closure
등이 두가지의 차이점은 뭘까요? 바로 Copying 의 동작에 차이가 있습니다.
Value Type
은 copying시 data의 unique한 복사본을 생성합니다. 반면 Reference Type
은 shared instance 를 사용합니다. 따라서 두번째 변수에 할당된 instance 의 값을 변경하면 기존 값도 같이 …
iOS 14 부터 개인 정보 보호 정책으로 third party cookie 사용이 막힘. 이에 파생되는 이슈에 대해선 Storage Access API 를 사용
facebook.com
에서 코드를 로드하고 있다면, facebook.com
에 해당하는 쿠키가 자체적으로 생성될 수 있는데 이것이 …
개-하! 저번 시간에는 작업을 class 로 만들어서 취소 / 순서 기능을 사용할 수 있는 DispatchWorkItem
에 대해 알아봤는데요!
오늘은 한번에 수행할 수 있는 작업의 수를 제한하는 DispatchSemaphore
에 대해 알아보도록 합시다. 가벼운 내용이니까 가벼운 맘으로 고고! 라고 쓰고 시작했는데 쓰다보니 무거워진거 같아요.. 족굼은 마음의 준비를 하고 내리시길.. ㅎㅎ
여러분 Semaphore 에 대해 아시나여? 위키의 정의를 잠깐 가져와봅시다.
정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다.
스레드가 공유 자원의 배타적인 사용을 보장받기 위해서 임계 구역에 들 …
지난 시간에는 Dispatch Group에 비동기 작업이 포함된 task 를 보낼때는 enter()
와 leave()
를 사용해야 함! 까지 살펴보았는데요, 이번 시간에는 DispatchWorkItem
을 알아보도록 합시다.
우리는 지금까지 원하는 작업들을 클로저 안에 넣어서 처리해왔습니다.
그러다 이런 생각을 하게 됐을지도 모르죠..!
🤔 : 흠.. 나는 작업들을 closure 묶어 보내는 대신, 아예 class 로 캡슐화해서 묶어버리고 싶다고!
앗 물론 이렇게 생각한 사람에 저는 포함되지 않습니다 ◠‿◠ 튼 이제 무슨 말이 나올지 아시겠죠? ㅎㅎ
DispatchWorkItem
은 지금껏 closure로 보내왔던 작업이 캡슐화 된 …