원격 시스템에서 메시지를 수신하고 메시지를 디스크의 파일에 작성해야하는 프로그램을 작성 중입니다. 이 프로그램의 목적은 메시지를받는 라이브러리의 성능을 테스트하는 것이므로 디스크에 메시지를 쓰는 것이 라이브러리의 성능에 영향을주지 않도록해야한다는 사실에 내가 찾는 어려움이 있습니다. . 라이브러리는 콜백 기능을 통해 프로그램에 메시지를 전달합니다. 또 다른 어려움은 솔루션이 플랫폼에 독립적이어야한다는 것입니다.파일에 플랫폼 독립적 인 비동기 쓰기를 구현하는 방법은 무엇입니까?
어떤 옵션이 있습니까?
나는 생각 다음 boost:asio
를 사용
- 이 파일에 쓸 수 있지만,이 파일에 대한 비동기 쓰기는이 라이브러리의 윈도우 특정 부분에 있는지 (this 설명서를 참조하십시오) 것 같다 - 그래서이 될 수 없다 익숙한.
boost::interprocess
을 사용하여 메시지 대기열을 만들었지 만 this documentation은 메시지를 보낼 수있는 3 가지 방법이 있음을 나타내며 메시지 대기열이 꽉 찼을 때 모든 방법으로 프로그램이 (암시 적으로 또는하지 않음) 차단해야합니다. 위험.std::deque<MESSAGES>
을 생성하여 콜백 함수에서 deque로 푸시하고 파일에 쓰는 동안 (별도 스레드에서) 메시지를 팝하지만 STL 컨테이너는 not guaranteed to be thread-safe입니다. deque를 밀고 잠글 수는 있지만 연속 메시지 간에는 약 47 마이크로 초가 걸리므로 잠글 수는 없습니다.
가능한 해결책에 대해 더 많은 아이디어가 있습니까?
메시지 사이에 47 마이크로? 그것은 원격 기계 종지입니까? –