2010-08-11 4 views

답변

2

예, 가능하다고 생각합니다.

패킷이 개별적으로 보내지기 때문에 수신 된 순서는 비 결정적이지만 UDP는 이미 있습니다.

따라서 동일한 소켓에 여러 스레드를 보내는 것이 좋습니다.

bind(), close()와 같은 소켓을 사용하여 다른 작업을 수행하는 경우 경쟁 조건이 발생할 수 있으므로 조심해야 할 수도 있습니다.

1

시스템 호출은 원자 적이어야하므로 공식적으로 UDP에서는 괜찮은 것처럼 보입니다. 그러면 커널에도 버그가 있으며 모든 종류의 불쾌한 놀라움을 초대합니다. 스레드마다 소켓을 사용할 수없는 이유는 무엇입니까? 그것은 당신이 연결이 필요한 곳에서 TCP와는 다르다. 추가 보너스로 각 설명자에 대해 별도의 송신 버퍼를 얻을 수 있습니다.

+0

원자 부분에 대해 잘 모르겠습니다. 예를 들어 Linux에서 선점 기능을 활성화 한 경우 syscalls은 아토믹이 아닙니다. – Emiliano

관련 문제