안녕하세요! 강의 재밌게 보고 있습니다! ㅎㅎ 코루틴을 공부하면서 항상 의문이던 부분이였는데 Dispatcher.IO가 Http Request 같은 IO 작업에서 어떤 원리로 Dispatcher.Default보다 더 효율적인걸까요? 내부 스레드선언이 더 많아서 Default보다 더 자주 코루틴 컨텍스트 스위칭이 되는걸까요?
실무에서 코루틴을 사용해야할 때 runBlocking 으로 코루틴 영역을 생성해야 할지 CoroutineScope로 생성해야 할지 또 어떻게 코루틴을 활용해야할지 감이 살짝 오시 않습니다.물론 호출부의 스레드를 블럭킹해야 한다면 runBlocking 일 것 같지만 보통 이렇게 사용한다라는 지향점이 궁금합니다. 실무에서 사용하기 위해 추천할만한 깃헙 레파지토리나 베스트프랙티스가 있을까요? - 학습 관련 질문을 남겨주세요. 질문을 상세히 작성하면 더 좋습니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 기초적인 질문 같지만, 코루틴을 처음 사용하는 입장에서 imageProcessingDispatcher를 인라인으로 넣을 수 없는 이유가 궁금합니다. 직접 테스트했을 때, launch(Dispatchers.Default.limitedParallelism(2)) { //... } 와 같은 코드는 예상한대로 동작하지 않고, 머신 processor만큼을 사용하는 것으로 보이는데, 그 이유가 뭘까요?
섹션4. CoroutineDispatcher 에서 미리 정의된 공유스레드 풀 내에 Dispatchers.Defualt 는 프로세서 개수(최하 2), Dispatchers.IO (64or프로세서 개수 중의 큰 수) 의 개수만큼의 스레드가 할당되는건가요? - 학습 관련 질문을 남겨주세요. 질문을 상세히 작성하면 더 좋습니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
println("[${Thread.currentThread().name}] 코루틴 실행2") 위 코드 실행할 때 실행결과가 아래와 같이 나오는데 @coroutine#1 어떻게 이렇게 코루틴 이름까지 같이 나오게 할 수 있나요?! [출력 결과] [MyThread1 @coroutine#1] 코루틴 실행 2
suspend fun searchByKeyword(keyword: String): Array<String> = coroutineScope { val dbResultsDeferred = async { searchFromDB(keyword) } val serverResultsDeferred = async { searchFromServer(keyword) } return@coroutineScope arrayOf(*dbResultsDeferred.await(), *serverResultsDeferred.await()) } 안녕하세요 "일시 중단 함수의 사용" 학습 중 나온 코드에 대해 질문 드립니다. 강의에서는 " coroutineScope을 사용하면, 일시중단 함수 내부에 coroutineScope 객체를 만들 수 있다." 라고 하셨는데, 이 부분이 이해가 잘 안갑니다. 먼저 coroutineScope {}를 선언하고, async 비동기 작업 -> delay 일시중단 순으로 진행되는데 일시중단 함수 내부에 coroutineScope 객체를 만들 수 있는 것이 이해가 잘 가지 않습니다. 제가 정리하기로는, " coroutineScope을 사용하면, 일시중단 함수 내부에 coroutineScope 객체를 만들 수 있다."라기 보다는 위 그림처럼 "하나의 coroutineScope에 2개의 비동기 작업과 각각의 일시중단 함수를 포함하는 것"으로 받아들여지는데 제가 어느 부분을 놓치고 있는건지 잘 모르겠습니다. 감사합니다. ^^
안녕하세요. 1) "미리 정의된 CoroutineDispatcher - 1. Dispatchers.I O, Dispatchers.Default" 강의 중 마지막 부분에서 Dispatchers.IO 와 Dispatchers.Default가 사용하는 스레드의 이름이 동일한 이유는 공유 스레드풀 때문이라고 하셨는데, 이 부분이 이해가 잘 가지 않습니다. 이것이 중요한 이유가 각각의 Dispatcher가 사용하는 스레드가 실제로는 다름에도 불구하고, 이름은 동일하기 때문에 헷갈리면 안되기 때문인가요? 제가 강조하신 부분을 잘 이해한건지 모르겠습니다. 2) LimitedParallelism은 코루틴 사용 시 모든 부분에 적용해야 하는 것인가요? 아니면 특정 경우에만 사용하면 되는 것인가요? 3) Code3-1~3-4를 실행할 때 어떤 때는 스레드 이름이 DefaultDispatcher-worker-1,2,3으로 뜨지만 또 어떤 때는 1,2,1 또는 1,2,4 또는 1,2,5 이런식으로 뜨는데 이유가 무엇인가요? 감사합니다!
안녕하세요, 해당 강의와 책을 통해 코루틴에 대한 학습을 진행하고 있는 학생입니다. 학습한 내용을 기술 블로그나 깃헙 등에 출처를 남기고 공개해도 되는지 궁금합니다! 요즘 강의와 책에 대한 저작권이 중요한 만큼, 강의자님께 직접 여쭙게 되었습니다. 좋은 강의 감사합니다.