해결된 질문
작성
·
82
답변 2
0
음 물리적 시간이 같은 경우는 있을거 같은데 말씀하신 0.0000001초의 오차인 경우 순서를 정하는것도 좀 애매하네요...
API 호출에 대한 비동기 퍼블리셔가 2개인 경우 정확히 물리적인 시간이 같은 동시인 경우가 분명히 있을거 같습니다.(없으면 race condition 같은 상황도 발생하지 않겠죠)
마찬가지로 Merge를 해서 방출해야하는 시점에서, 방출 상태에 대한 리소스에 접근하려는 경쟁 상태는 분명히 올것 같습니다.
좀 더 찾아봐야겠어요. 답변 감사합니다!
엇 제가 race condition에 대한 개념을 잘 이해하고 있지 못했네요.
음 정말로 물리적인 시간이 같다고 하더라도 뭔가 OS 스케줄러에 의한 조금의 시간차이는 발생할거 같네요.
단순히 어? 동시에 방출되면 어떻게 되는거지하는 생각에 머리속이 복잡해져 버렸던거 같습니다.
답변 감사합니다!
0
안녕하세요
동시라곤 하지만 그 입력이 0.0000001초의 차이가 있을텐데요
그 순서에 따라 merge된 다운스트림으로 보내집니다
아주 조금이라도 먼저 방출된 값이 다운스트림에 먼저 보내진다고 생각하시면 됩니다!
안녕하세요 cocoaa님!
race condition 같은 경우는 완전 동시에 접근해서 생긴다기 보다는
1개의 쓰레드가 어떤 공유자원(변수)에 접근 중일때 다른 쓰레드가 또 접근해서
수정하는 경우, 실행할 때마다 결과가 일정하지 않는 것이라고 알고 있습니다.
여기서 말하는 동시 접근은 완전히 물리적으로 같은 타이밍에 접근한다기 보다는
한 쓰레드가 접근 중일때 다른 쓰레드가 접근 함을 의미합니다.
먼저 접근한 쓰레드가 해당 공유 자원을 계속 수정중일때 다른 쓰레드에서 나중에 접근함을 의미하죠.
말씀하신 API호출도 2개의 비동기 작업이 요청되었다가 결과를 받는 타이밍도 아마 시간 차이가 있을텐데요. 만약 두개의 결과를 merge한다고 하면 그 시간 차이에 따라 순서가 결정된다고 보시면 됩니다.