최대 30,000 개의 원격 장치를 관리하는 서비스를 개발 중입니다.쓰기 대신 BeginWrite를 사용해야하는 이유는 무엇입니까?
비동기 메소드 인 것 같습니다. BeginWrite는 다음 자원을 더 많이 사용합니다. Write (콜백 스레드를 작성하는 데 필요한 오버 헤드로 인해); 반면에 Write 메서드는 항상 BeginWrite보다 빨리 반환됩니다.
제 질문은 BeginWrite를 선호하는 이유는 무엇입니까?
또 다른 질문은 : Write WriteTimeout for sync Write를 설정해야하는 이유는 무엇입니까? 어떤 경우 Write 메서드는 (예를 들어 닫힌 소켓 때문에) 즉각적인 예외를 생성하지는 않지만 합리적인 시간 내에 완료하지 못합니까?
EDIT : 나는 작업자 스레드 (32 또는 64)를 가지고 있으므로 한 번에 500-1000 개의 장치에 데이터를 보내고 쓰기는 BeginWrite보다 잘 작동하는 것 같습니다.
EDIT 2 : 약간의 검색 후, 필자는 쓰기 버퍼가 가득차면 sync write가 중단된다는 것을 알고 있습니다. 기본 쓰기 버퍼 크기는 8KB이며 한 번에 1-2KB의 데이터 만 전송하므로 내 응용 프로그램에서 Write가 중단되지 않아야하고 BeginWrite가 더 잘 수행됩니다. WriteTimeout 보안을 1 초로 설정했습니다.
데이터를 모든 원격 장치에 한 번에 보냅니 까? 테스트 코드를 보여줄 수 있습니까? –
한 번에 500-1000 개의 기기에 데이터를 전송합니다. – ElmoDev001
매우 큰 프로젝트이므로 코드를 보여주는 것이 간단하지 않습니다. – ElmoDev001