Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Week 3] 자료 제출 #11

Merged
merged 1 commit into from
Nov 26, 2024
Merged

[Week 3] 자료 제출 #11

merged 1 commit into from
Nov 26, 2024

Conversation

sunseo18
Copy link
Collaborator

📌 Study

  • 코루틴의 개념과 동작 방식
  • 코루틴과 스레드 비교

📚 Reference

https://june0122.github.io/2021/06/09/coroutines-under-the-hood/
https://www.youtube.com/watch?v=YrrUCSi72E8&t=110s&ab_channel=JetBrains

Copy link
Collaborator

@jaeyeong951 jaeyeong951 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!🙇


### 코루틴?

**진입 지점과 반환 지점을 여러개 가질 수 있어서** 서브 루틴의 임의 지점에서 동작을 중단하고, 이후 다시 해당 지점에서부터 실행을 재개할 수 있음
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전 그냥 중단 가능하다고만 설명했는데, 진입 지점과 반환 지점이 여러개라는 말이 훨씬 더 와닿네요 👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러게요 join을 사용한 일시 정지의 느낌보다는 진입/반환의 워딩이 좀 더 와닿아요


함수 내에서 다른 함수를 호출할 때, 지금까지 연산했던 결과를 넘겨주고, 호출한 함수의 동작이 끝나면 재개할 지점을 넘겨줘야됨 == sm (state machine)

```kotlin
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴파일 된 코드 보여주는거 좋네용

Copy link
Member

@char-yb char-yb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM


### 코루틴?

**진입 지점과 반환 지점을 여러개 가질 수 있어서** 서브 루틴의 임의 지점에서 동작을 중단하고, 이후 다시 해당 지점에서부터 실행을 재개할 수 있음
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러게요 join을 사용한 일시 정지의 느낌보다는 진입/반환의 워딩이 좀 더 와닿아요

Comment on lines +151 to +162
### Suspend 함수의 중단점은 어떤 기준으로 생기는 걸까?

1. suspend 함수를 호출할 때
2. 네트워크 요청, I/O 작업 등이 일어날 때
3. 코루틴 컨텍스트가 변경될 때


suspend 키워드를 붙인다고 모두 중단하는 것이 아니라, 중단 “가능”할 뿐

ex) 단순 연산만 반복하는 함수는 자동으로 중단하지 않음 → delay, yield 등을 이용해서 명시적으로 중단 지점을 사용해야됨

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suspend에 대한 중요 내용을 작성해주셨네요! 감사함다!

val task2 = CompletableFuture.supplyAsync { nonSuspendIoTask2() }
val task3 = CompletableFuture.supplyAsync { nonSuspendIoTask3() }

val allTasks = CompletableFuture.allOf(task1, task2, task3)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기서 join 한번 써도 될거에유

@sunseo18 sunseo18 merged commit 5711395 into main Nov 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants