해결된 질문
작성
·
501
·
수정됨
답변 1
1
안녕하세요, 목동 개발자님! 정말 좋은 질문 감사드립니다! 😊
결론부터 빠르게 말씀드려보면, 저 역시도 코루틴을 사용하면서 하나의 코루틴에서 스레드가 변경되더라도 특정 변수를 계속해서 유지해 나가도록 하는 기능(= 스레드의 ThreadLocal
)을 직접적으로 제어해본적은 없습니다!!
사실 ThreadLocal
역시 프레임워크나 라이브러리를 만들 때는 사용하지만, 프레임워크를 사용하는 입장에서는 직접적으로 잘 쓰지 않는 것과 같은 느낌인 것 같아요!
Non-blocking 서버 프레임워크인 webflux에서 context를 유지하기 위해 내부적으로 말씀해주신 방법을 쓰지 않을까 추측하는 정도입니다! MVC에서 Thread 기반으로 유지되던 정보를 webflux에서는 context 기반으로 바꿨던 것처럼요!
추가로 부모 자식 간에 데이터를 전달할 때는 단순히 부모 코루틴에서 갖고 있는 변수를 자식 코루틴에 넘기면서 실행할 수 있다보니, coroutine context를 통해 직접적으로는 잘 넘기지 않는 것 같아요!
launch {
val num = 3 // 부모 코루틴의 변수
launch {
num + 5 // 부모 코루틴의 변수를 바로 활용한다!
}
}
답변이 도움이 되었으면 좋겠습니다. 감사합니다!! 🙇🙇