인프런 커뮤니티 질문&답변

corea1836님의 프로필 이미지
corea1836

작성한 질문수

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

Sinks 와 thread-safe

작성

·

165

0

안녕하세요.

강의 중 Sinks가 thread-safe 하다는 이야기가 잘 이해가 안 가서 질문 드립니다.

혹시 예시를 들어 설명해주실 수 있나요?

구글링 해봐도 어떤 원리로 therad-safe 한지 이해가 안 가서요.

답변 1

0

Kevin님의 프로필 이미지
Kevin
지식공유자

안녕하세요?

Sinks의 tread-safe 하다는 부분에 대해서 질문을 주셨네요.

먼저 아래 코드는 공식 문서에 나오는 Sinks 내용 중 일부인데요.

image쓰레드가 동시 접근하는 상황이 발생했을 때 쓰레드 중에서 동시 접근하는 쓰레드 중 하나를 빠르게 실패하게 함으로써 쓰레드 안전성을 보장한다라고 나와있습니다.

 

그리고 아래는 Sinks 내부 코드 중 일부인데요.

image- 먼저 (1)에서 쓰레드 관련된 문제 등을 포함해서 데이터를 emit할 때 발생할 수 있는 문제에 대해서 체크한 후, 데이터를 emit합니다. 만약에 어떤 문제가 감지되면,

- (2)에서 EmitFailureHandler가 빠르게 emit을 실패시킵니다. 디폴트는 즉시 실패를 시키지만 EmiFaiureHandler 함수형 인터페이스를 구현할 때 더 시도할지 말지 여부를 지정할 수 있습니다.

- 그리고 (3)에서 emit이 실패한 부분에 대해서 후처리를 하고 있습니다.

 

질문에 대한 답변이 되셨길 바랄게요.

corea1836님의 프로필 이미지
corea1836

작성한 질문수

질문하기