내 현재의 자바 구현을 기다립니다FIFO 큐는 요청을 보내고 그래서를 heres 응답
- 는 비 블로킹 큐에 패킷을 넣어 스레드를 사용하여 UDP 소켓에서 UDP 패키지를 수신 .
- 300 개의 스레드 중 하나가이 논 블로킹 큐를 읽고이 패킷을 TCP 호스트/포트에 연결된 소켓에 대한 요청으로 처리합니다.
- 응답을 기다렸다가 UDP 소켓으로 되돌립니다.
이 부분은 모두 정상적으로 작동하지만로드가 많은 TCP 소켓 부분을 분석 한 결과 무작위로 TCP 소켓 부분을 완료하는 데 약 2 ~ 5 초가 걸릴 수 있음을 확인했습니다. 보통이 부분은 2 ~ 3 밀리 초가 걸립니다. 내 질문은 내가 그냥 임의의 스레드 실행과 함께 TCP 소켓 타격이고 그 스레드 작업의 FIFO가 없다는 것입니다.
'요청'정보와 현재 스레드 참조 ('응답'을 처리 할 스레드를 알고있는 것)를 배치 할 수있는 방법이 있습니까? FIFO 차단 대기열에 가장 오래된 스레드가 먼저 처리되도록하십시오. 그 TCP 소켓 요청/응답 작업은 최소한의 시간이 걸립니다.
TCP 작업을 차단하는 개별 스레드가 있습니까? 아니면 비 블로킹으로 배치 했습니까? 그렇다면 어떻게? –
왜? TCP 응답 시간이 변경된다는 것을 어떻게 알 수 있습니까? 왜 UDP 자체가 순서가 맞지 않을 때 순서가 중요합니까? – EJP
상자에 300 개의 코어가 있기를 바랍니다. –