3강 스레드 제어권 관리 질문드립니다
안녕하세요!
3강 6분 30초 부터 “func2가 스레드 제어권을 운영체제에 양보했다가 func2의 실행이 끝나면 재개되고 함수가 리턴” 이라는 내용이 나오는데요.
관련하여 아래 세 가지 문의 드립니다.
재개 <- 운영체제에서 func2로 스레드 제어권이 돌아온다는 건가요? 어떤 의미로 쓰인 말인지 궁금합니다.
func2가 리턴 될 때 스레드 제어권이 func2에 있었다면(1의 상황), 리턴 시점에 제어권도 func1로 돌아가는 게 맞나요?
결과적으로 func2가 리턴 될 때 스레드 제어권이 func2에서 func1로 양도되는 것은 GDC / Swift Concurrency 동일한건가요?
답변 주시면 감사하겠습니다. (_ _)
Câu trả lời 1
1
네 안녕하세요 미뇽 님!
1. 네 맞습니다. 재개(resume)를 하게 되면, 양보했던 쓰레드 제어권을 다시 돌려받아 일처리를 하게 됩니다. (쓰레드 제어권이란 것은, "지금 실행되는 함수"가 가지고 있을 수 밖에 없다고 보시면 됩니다. 왜냐면.. 쓰레드 제어권은 쉽게 말하자면, "CPU를 내가 차지하고 사용할께"의 그 내부 컨트롤을 관리하는 개념이기 때문입니다. 그러니까, 여기서 func2는 다시 쓰레드 제어권을 돌려받아서, 함수를 재개시킨 것이다라는 의미로 설명드리고 있는 것입니다.)
2. 네 맞습니다. func1에서 func2를 호출한 상황이라고 가정하고 설명드렸고, (func2가 CPU를 차지하고 사용하다가) func2가 일처리가 다 끝나서 리턴하게 되면 ("func1아, 이제 CPU 니가 차지하고 사용해도 돼"..이런 것처럼) 쓰레드 제어권을 이제 func1에 넘기게 됩니다.
3. 네 맞습니다. func1 (Caller)에서 func2 (Callee)를 호출하게 되면, func1이 가지고 있던 쓰레드 제어권을 func2에게 넘겼다가 실행이 다 끝나면 func1이 돌려받게 되는데, 이 개념은 GCD나 Swift Concurrency나 동일합니다.
다만, 차이는.. GCD에서는 (func2입장에서 보면) func2는 쓰레드 제어권을 운영체제에게 양보할 수 있는 개념이 없는데, (그래서 func2는 한번 일을 시작하면 무조건 끝날때까지 동작할 수 밖에 없는데)
Swift Concurrency는 func2가 운영체제에게 잠깐 쓰레드 제어권을 양보해서, (중간에) 운영체제가 다른 일처리를 해도 될 수 있게 되는 개념입니다. (운영체제는 그 양보 받은 쓰레드 제어권을 또 다른 어떤 함수에게 잠깐 빌려줘서 일을 시키겠죠.)
4강에서 메모리 구조적으로 어떻게 함수가 잠깐 멈췄다가 실행될 수 있는지의 내용을 참고하셔서 생각해 보시면 많은 도움이 되실꺼예요! 이해가 안되시는 부분이 있으시면 추가적으로 질문주세요 :)
감사합니다. :)
진로에 대한 질문...!
0
41
1
run() 메서드 안에 지역변수 sum을 사용한 이유
0
77
1
Static 선언 시 에러 발생
0
48
1
클로저의 형태로 만들다
0
52
1
Function Types Error
0
43
1
안드로이드 기기 실행 오류
0
68
2
중복 코드와 유지보수성 사이에서 어떤 기준으로 리팩토링해야 할지 궁금합니다
0
48
1
수강연장 가능할까요...
0
61
2
강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.
0
64
2
SwiftData 미리보기 미적용
0
58
2
중괄호와 함수
0
60
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
82
1
20강 Task 내부에서 nonisolated async 호출 예제 질문드립니다
0
114
2
19강 Actor 의 동작 관련해 질문드립니다
0
130
2
Actor에서 Task vs Task.detached 사용 시 재진입 문제 질문
0
145
2
18강 NSCache 예시 질문
0
146
2
Task 클로저 내 `non-Sendable` 값 타입 접근 시, 캡처 리스트가 정의된 Task 순서에 따른 컴파일러 에러 차이
0
142
1
10번 강의 관련하여 질문드립니다.
0
99
2
ImageProject 관련 문의
0
82
1
10강 내용 문의드립니다.
0
109
2
강의를 들으면서 생긴 질문이 있습니다.
0
168
3
협력적 쓰레드 풀에서 쓰레드 운영방식 질문 드립니다.
0
111
1
안녕하세요. 액터 홉핑 관련 질문드립니다.
0
182
1
재개될 때 스레드 변경시 왜 컨텍스트 스위칭이 발생하지 않는 건가요?
0
350
2

