난 c++ 게임 개발자인데
요즘 유니티랑 c# 공부중임
근데 유니티 api문서랑 블로그 설명 왜이렇게 이상해?
코루틴이랑 async비동기랑 전혀 상관이 없는 개념이고
코루틴에서 yield return webRequest.SendWebRequest() 이렇게 하는데
SendWebRequest가 동기적으로 작동하는건지 별도 스레드에서 작동하는건지 도저히 설명이 안나와있음
그냥 예제 따라 작동하니까 이런식으로함...
진짜 코드도 못까보고 그냥 너무 부실해
SendWebRequest가 동기적으로 작동하는지 알아서 뭐하려구?
유니티 사이클 안에서 쉬었다 실행하는게 메인 스레드를 안 막아서 비동기 처럼 쓴다는 거긴한데 일단 메인에서만 도는 거 맞을 거임 그냥 확실히 비동기 처리 하고 싶으면 UniTask ㄱㄱ
sendwebrequest() 자체는 동기적인게 맞음. 물론 http 요청 끝날때까지 블로킹 하는 건 아니고 AsyncOperation 객체를 반환함. 유니티 코루틴은 update 주기마다 검사를 수행하는데, yield로 반환한 객체가 조건을 만족하면 다음 줄로 넘기는 방식임. AsyncOperation을 yield return으로 반환했고, 유니티는 매 프레임마다 http 요청이 끝났는지 확인함. - dc App
그런게 궁금함... unitywebrequest를 예로들면 yield return 을 하면 요청이 완료될때까지 매 프레임 체크하는건지... 메임 스레드가 블락 되는건지... 이런게 안나와있어... api문서 보면 "Yielding the WebRequestAsyncOperation inside a coroutine will cause the coroutine to pause until the UnityWebRequest encounters a system error or finishes communicating." 라고 하는 해석을 못하는건가.. 설명만으로는 그냥 메임쓰레드가 블락된다는거 아니야? 근데 실험해보면 매프레임 마다 체크하는거 같은데
아 코루틴이 pause된다고 하구나 나는 코루틴이 요청 대기하느랴 pause가 되어 메임 쓰레드까지 block되다는 줄..
매 프레임 체크 맞음. isDone == true인지 매번 검사함. - dc App
ㅇㅋ 감사 yield return f(); 이런 코드에서 메임 스레드가 블락되는지 아니면 매 프레임 도는지... 이런게 궁금했음