SendQueue
SendQueue는 함수 호출 시 바로 호출하지 않고 큐에 적재한 후 순차적으로 함수를 호출하는 방식입니다.
SendQueue의 경우 별도의 스레드에서 동작하므로 비동기 함수와 유사하게 사용이 가능합니다.
SendQueue 사용 시 주의사항
SendQueue의 경우 함수를 큐에 적재하면 별도의 스레드에서 큐에 적재한 함수를 하나씩 꺼내 실행하는 방식입니다.
즉 함수를 호출한 시점에 바로 함수가 호출되는 것이 아닌 큐에 적재된 순서대로 함수가 하나씩 실행되게 됩니다.
SendQueue에 여러 개의 함수를 적재한 경우 제일 마지막에 삽입한 함수는 호출 자체가 늦게 되어 응답이 지연될 수 있습니다.
SendQueue의 콜백 함수는 유니티의 메인 스레드 내에서 실행되도록 설계되었습니다.
그렇기에 비동기 함수와는 달리 콜백 함수 내에서 유니티 객체, UI 객체 등에 접근할 수 있습니다.
SendQueue에 함수를 적재하여 사용하는 상황
- 대부분의 상황에 사용이 권장됩니다.
- 함수 호출 순서 간 순서 보장이 필요할 때
- 여러 개의 함수를 호출하면서 최종적 읽기 일관성 보장 문제를 회피하고 싶을 때
SendQueue에 함수를 적재하여 사용하면 안 되는 상황
- 함수 호출 즉시 요청을 보내야 할 때
- 게임 종료 시 현재 유저의 데이터의 저장을 시도할 때