P粉5503233382023-09-06 00:32:52
하고 싶은 일이 정말 힘들어요. 이러한 장치를 동기화하는 것은 어렵습니다. 하드웨어를 소유하고 제어하지 않으면 이를 수행하는 것이 거의 불가능합니다. 솔직히 말해서, 나는 당신이 원하는 것을 결코 얻을 수 없을 것이라고 생각합니다.
타임스탬프는 작동하지 않습니다. 우선, 이러한 장치는 모두 동일한 타이밍을 갖지 않습니다. 모두 약간씩 떨어져 있을 것입니다. 다음 아이디어는 서버와 같은 중앙 소스에서 시간을 보내는 것입니다. 문제는 각 장치에 데이터를 전송하는 데 임의의 시간이 걸린다는 것입니다. 12개의 패킷에 대한 왕복 시간을 미리 계산하여 대기 시간을 추측할 수 있지만 이는 여전히 추측일 뿐이며 다음 패킷에서는 정확하지 않을 수 있습니다. NTP는 장치의 시간을 동일한 시간에 가깝게 유지하는 데 도움이 되지만 원하는 만큼 정확하지는 않습니다.
원하는 정확도를 달성하더라도 Android는 실시간 운영 체제가 아닙니다. iPhone에서는 그렇지 않습니다. 알람을 12:00:00으로 설정하더라도 정확히 12:00:00.000에 알람이 울리지는 않습니다. 그 후 언젠가 운영 체제에 유휴 시간, 유휴 코어가 있고 애플리케이션을 가장 중요한 예약 애플리케이션으로 간주할 때 실행됩니다. 이 작업에는 수백 밀리초가 걸릴 수 있습니다. 원하는 약속을 제공할 수 있는 운영 체제가 있습니다. 실시간 운영체제(Real-Time Operating System)로 알려진 이 운영체제는 의료 장비, 고가 기계용 컨트롤러 등 고장이 나지 않는 임베디드 장치에 자주 사용됩니다. 이는 소비자 장치에서 사용되는 운영 체제 작성과 완전히 다른 접근 방식입니다.
귀하의 요구 사항을 다시 생각하고 이에 대해 좀 더 현실적으로 생각하는 것이 좋습니다. 원하는 것을 얻을 수 있는 기술이 있지만 인터넷을 통한 소비자 운영 체제의 임의 하드웨어에서는 얻을 수 없습니다.
또한 이렇게 하고 싶다면 React Native를 사용하는 것을 별로 권장하지 않습니다. React Native는 가비지 수집 언어로 인터프리터를 실행하며 타이밍이 매우 무작위입니다. 가장 예측 가능한 접근 방식이므로 최소한 C로 런처를 작성하는 것이 좋습니다.
하지만 실제로는 귀하의 요구 사항을 재고해 보시기 바랍니다. 왜 50밀리초 내에 시작해야 합니까? 인터넷을 통해 작업할 때 사람들이 잠시 동기화되지 않는 것이 정말로 문제가 됩니까?