작성
·
165
0
안녕하세요.
강의 중 Sinks가 thread-safe 하다는 이야기가 잘 이해가 안 가서 질문 드립니다.
혹시 예시를 들어 설명해주실 수 있나요?
구글링 해봐도 어떤 원리로 therad-safe 한지 이해가 안 가서요.
답변 1
0
안녕하세요?
Sinks의 tread-safe 하다는 부분에 대해서 질문을 주셨네요.
먼저 아래 코드는 공식 문서에 나오는 Sinks 내용 중 일부인데요.
쓰레드가 동시 접근하는 상황이 발생했을 때 쓰레드 중에서 동시 접근하는 쓰레드 중 하나를 빠르게 실패하게 함으로써 쓰레드 안전성을 보장한다라고 나와있습니다.
그리고 아래는 Sinks 내부 코드 중 일부인데요.
- 먼저 (1)에서 쓰레드 관련된 문제 등을 포함해서 데이터를 emit할 때 발생할 수 있는 문제에 대해서 체크한 후, 데이터를 emit합니다. 만약에 어떤 문제가 감지되면,
- (2)에서 EmitFailureHandler가 빠르게 emit을 실패시킵니다. 디폴트는 즉시 실패를 시키지만 EmiFaiureHandler 함수형 인터페이스를 구현할 때 더 시도할지 말지 여부를 지정할 수 있습니다.
- 그리고 (3)에서 emit이 실패한 부분에 대해서 후처리를 하고 있습니다.
질문에 대한 답변이 되셨길 바랄게요.