부스트 : asio 문서 (비동기 클라이언트에서 자동으로 나타남)를 읽었으며 여기를 살펴 보았지만 여기에서 나무에 대한 포리스트를 찾을 수 없습니다.부스트 비동기 UDP 클라이언트
나는이처럼 보이는 메인 루프가 시뮬레이션있어 : 충분히
for(;;)
{
a = do_stuff1();
do_stuff2(a);
}
쉬운. 내가 가질 수 있도록 내가하고 싶은 무엇
는, 수정할 수 있습니다 :
나는 다음과 같은 요구 사항이for(;;)
{
a = do_stuff1();
check_for_new_received_udp_data(&b);
modify_a_with_data_from_b(a,b);
do_stuff2(a);
}
:
내가 아니었다해서 데이터를 잃을 수 없습니다-
적극적으로 듣는다. IE 서버가 패킷을 보낸 시간에 check_for_new_received_udp_data() 대신 do_stuff2()에 있었기 때문에 패킷을 잃고 싶지 않습니다.
- 주 for for 루프가 60Hz에서 실행되어야하므로 check_for_new_received_udp_data() 블록을 약 2ms 이상 가질 수 없습니다.
- 서버가 다른 곳에서 실행되며 완전히 일정이 잘못되었습니다. 때로는 데이터가 없으며, 반복적으로 같은 패킷을 얻을 수도 있습니다.
나는 비동기 UDP를 사용했는데, io_service.run()을 호출하면 무기한 차단되므로 실제로 도움이되지 않습니다.
나는 블로킹 소켓 읽기를 시간 초과하는 것으로 생각했지만, 부스트 호출을해야만 할 것 같아 보이지 않는다.
대답은 스레딩과 관련이 있습니까? 어느 쪽이든, 누군가가 친절하게 다소 비슷한 예를 지적 할 수 있습니까? 확실히 이것은 이전에 행해졌 다.
+1 멋진 첫 번째 질문, SO에 오신 것을 환영합니다 –
긴 시간 lurker, 처음으로 포스터. 나는 reddit 다음에 할 것이다 :) – Grommit