토큰 발급 여러 번 요청하지 않기 Youtube

문제 상황

  • 한 화면에 진입했을 때 여러 API를 호출.
  • 이때 토큰이 유효하지 않으면 각각의 API를 통해서 토큰 발급이 요청된다.

요구 사항

  • 토큰이 발급되는 동안에는 토큰 발급을 다시 요청하지 않는다.
  • 토큰이 발급되는 동안 토큰 발급을 요청한 스레드는 토큰 발급 응답을 받았을 때 해당 응답을 반환받는다.

해결 방법

  • 메서드에 진입하면 하나의 뮤텍스를 두 번 거치게 한다.
  • 첫째 뮤텍스에서는 최초에 진입한 스레드만 작업을 진행하고, 그 결과를 변수에 할당하게 한다.
  • 둘쨰 뮤텍스에서는 최후에 진입한 스레드가 작업 결과가 할당된 변수를 초기화한다.