묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결앨런 Swift Concurrency for Swift 6 (Part-1)
Task를 함수 내부에서 사용했을 때 값의 변화를 예상하는 법
📌 자주하는 질문 모음링크: https://pointed-earwig-996.notion.site/Swift-Concurrency-for-Swift-6-Part-1-22eecb0b83154ac28c7c66446f6e54e1?pvs=4 자주하는 질문을 먼저 확인 부탁드리며, 질문은 최대한 구체적으로하셔야 빠르게 답변드릴 수 있습니다. [질문 예시](1) 몇강, 몇초의 내용이 잘 이해가 안갑니다. (제가 적어놓은 강의 번호 "10강, 7분 강의 내용 중에... " )(2) 강의자료 몇페이지의 내용이 잘 이해가 안갑니다.(3) 정확하게 어떤 포인트에 대한 내용이 이해가 안갑니다. 다시 설명해주실 수 있나요? 안녕하세요 엘런님, 강의를 들으면서 swift concurrency를 적극 활용해보고 있는 중입니다.코드를 작성하고 나서 테스트 코드를 작성하면서 의문이 생기게 되었는데요,class viewmodel { @Published private(set) var count = 0 enum Event { case buttonTapped } // viewcontroller에서 호출하는 함수 func dispatch(_ event: Event) { Task { switch event { case .buttonTapped: count += await fetch() } } } // 네트워크를 통해 받아오는 값이라고 가정. private func fetch() async -> Int { return 100 } } struct viewmodelTests { var sut: viewmodel! init() { sut = viewmodel() } @Test func testButtonTapped0() async throws { sut.dispatch(.buttonTapped) try await Task.sleep(for: .seconds(1)) #expect(sut.count == 100) } @Test func testButtonTapped1() async throws { sut.dispatch(.buttonTapped) await Task.megaYield() #expect(sut.count == 100) } @Test func testButtonTapped2() async throws { sut.dispatch(.buttonTapped) try await Task.yield() #expect(sut.count == 100) } @Test func testButtonTapped3() async throws { try await withMainSerialExecutor { sut.dispatch(.buttonTapped) try await Task.yield() #expect(sut.count == 100) } } @Test func testButtonTapped4() async throws { try await withMainSerialExecutor { sut.dispatch(.buttonTapped) try await Task.megaYield() #expect(sut.count == 100) } } }다음과 같은 viewmodel을 테스트하는 코드를 작성했을 때,0번째 테스트의 경우는 현재 testButtonTapped0가 실행되는 Task를 suspend했지만, dispatch 함수 내부의 Task는 suspend되지 않고 그대로 진행되기 때문에 정상적으로 작동을 할 것으로 예상을 했습니다.https://github.com/pointfreeco/swift-concurrency-extras1번째의 경우는 위 라이브러리를 사용해서 하나의 Task를 여러번 yield시켜주도록 해서 동작하도록 해서 거의 높은 확률로 작동을 했습니다.그런데 testButtonTapped2의 경우 yield를 해주더라도 남아있는 스레드가 존재해서 바로 다시 일을 진행을 해서 틀릴 때가 있는 걸까요???또한 5번째는 거의 항상 맞는 것이 보장되는데 3번째는 보장이 되지 않는 이유도 궁금합니다. 궁극적으로 궁금한 점은 현재 위 코드의 viewmodel의 dispatch함수를 테스트하기 위해서 어떠한 방법을 사용해야 항상 성공을 보장할 수 있을 지 궁금합니다. 또한 Task.yield()를 했을 때 어떤 Task를 yield하는지 정확하게 이해가 가지 않습니다.. 긴 글 읽어주셔서 감사합니다!
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
파트1 PDF 강의 자료 다운로드
파트1 PDF 강의 자료 다운로드 받고 싶은데, 어디서 받을 수 있는지 모르겠습니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
Part 2에 대해서
안녕하세요! 좋은 강의 너무 잘 듣고 있습니다.2025년 1월 안으로 part 2 강의 제작을 마무리 하는게 목표라고 하셨던 것 같은데, 예상 일정대로 part 2도 업로드 될까요?actor와 sendable에 대해서 얼른 공부하고 싶어 기다리고 있습니다 ㅎㅎ답변 부탁드립니다!
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
강의자료 관련 질문
안녕하세요 엘런님 먼저 정말 좋은 강의 제작 해주셔서 감사합니다.현재 컨커런시 part1을 시작하려고 강의 구매 및 강의 자료를 다운받았는데요part2 역시 강의가 오픈되면 구매할 생각입니다.그런데 그 때는 part2 강의자료만 따로 제공되지는 않을까요??설명을 보니 묶어서 교제로 판매하신다고 하시는데 part2 강의 자료만 필요한데교제까지 구매하면 조금 부담이 될 것 같아사요
-
미해결아마존 클라우드 무료계정으로 시작하는 서버리스 애플리케이션 프로젝트
Lambda function의 동시성 제어 질문
aws에서 제어하는 동시성 제어와, lambda function의 js 내 async 옵션은 별개일 것 같은데요. 어떤 차이가 있을까요? lambda의 실행 환경이 어떤 지 가늠이 잘 안돼서 차이를 이해하지 못하겠습니다. aws의 동시성 제어는 프로세스 단위인가요?