UDP 패킷을 다른 IP 주소로 보내야하는 스레드가 여러 개 있습니다 (전송할 때만 수신 할 필요 없음). 모든 스레드에서 동일한 UDP 소켓을 재사용 할 수 있습니까?다중 스레드에서 동일한 UDP 소켓에서 전송
2
A
답변
2
예, 가능하다고 생각합니다.
패킷이 개별적으로 보내지기 때문에 수신 된 순서는 비 결정적이지만 UDP는 이미 있습니다.
따라서 동일한 소켓에 여러 스레드를 보내는 것이 좋습니다.
bind(), close()와 같은 소켓을 사용하여 다른 작업을 수행하는 경우 경쟁 조건이 발생할 수 있으므로 조심해야 할 수도 있습니다.
1
시스템 호출은 원자 적이어야하므로 공식적으로 UDP에서는 괜찮은 것처럼 보입니다. 그러면 커널에도 버그가 있으며 모든 종류의 불쾌한 놀라움을 초대합니다. 스레드마다 소켓을 사용할 수없는 이유는 무엇입니까? 그것은 당신이 연결이 필요한 곳에서 TCP와는 다르다. 추가 보너스로 각 설명자에 대해 별도의 송신 버퍼를 얻을 수 있습니다.
관련 문제
- 1. 동일한 소켓에서 송수신하기
- 2. UDP 소켓에서 소켓 오류 10052
- 3. 스레드에서 작업으로 데이터 전송
- 4. Windows UDP 전송 문제
- 5. 다중 스레드에서 동일한 결과 세트 읽기
- 6. 다중 UDP 포트
- 7. 연결되지 않은 UDP 소켓에서 WSARecvFrom이 반환되지 않습니다.
- 8. UDP 소켓에 쓸 동시에 소켓에서 읽을
- 9. iPhone UDP 임시 데이터 전송
- 10. 자바 전송 UDP 패킷 문제
- 11. UDP + java를 사용하는 다중 스레드 응용 프로그램
- 12. C : TCP 및 UDP 소켓에서 호스트 이름을 가져 오는 중입니까?
- 13. devmachine에서 AVD 에뮬레이터로 UDP 패킷 전송
- 14. 동일한 소켓에서 send/recv에 대한 병렬 호출이 유효합니까?
- 15. 정확히 하나의 UDP 패킷을 소켓에서 읽을 수 있습니까?
- 16. 부스트 asio udp 소켓에서 특정 데이터 크기를 읽으십시오
- 17. udp 소켓에서 한 번에 여러 클라이언트에 패킷 보내기
- 18. (UDP) Windows 소켓에서 데이터 전송을 시도하기 전에 언제든지 ARP가 발생합니까?
- 19. Matplotlib : 다중 스레드에서 동시에 플로팅
- 20. 다중 스레드에서 MemoryStream에 스트림 읽기
- 21. C# 단일 스레드에서 다중 스레드로 전환
- 22. UDP sendto() 블록은 언제 차단합니까?
- 23. 동일한 포트에 바인딩 된 여러 개의 UDP 소켓?
- 24. 동일한 소켓에서 얼마나 많은 비동기 소켓 요청이 진행될 수 있습니까?
- 25. 부분적으로 소켓에서 읽기
- 26. iframe은 소유자와 동일한 스레드에서 실행됩니까?
- 27. 다중 및 동시 클라이언트를위한 Python UDP 소켓 옵션
- 28. 다중 판독기 스레드에서 배열 사용 + 작성기
- 29. TCP 대 UDP 처리량
- 30. ICMP 소켓에서 데이터 수신
원자 부분에 대해 잘 모르겠습니다. 예를 들어 Linux에서 선점 기능을 활성화 한 경우 syscalls은 아토믹이 아닙니다. – Emiliano