2013-01-11 2 views
3

boost::io_service을 사용하여 post() 메서드를 통해 boost::bind 개체를 사용하는 이벤트의 비동기 처리를 수행하고 있습니다. 이 사람이 새로운 배정을하면 알 수 있습니까? 아래에 이벤트 대기열이 있다는 것을 알고 있지만 완전히 작동하는 방법을 알고 있습니다. 분명히 나는 ​​고성능에 대해 우려하고있다.boost :: io_service post 메서드로 인해 새 할당이 발생합니까?

+0

신청서를 작성하셨습니까? –

+0

예. 나는 중요한 경로에서 새로운 할당을 피하려고 노력하고있다. –

답변

4

예, 할당이 발생합니다. 할당에 성능상의 문제가있는 경우 custom allocator for the handler을 사용할 수 있습니다.

+0

나는 global new에 대한 재정의로 직접 테스트했다. boost :: io_service post 중에 실제로 3 개의 할당이 발생하는 것 같습니다. 핸들러에 대한 커스텀 할당자를 사용하는 경우에도 여전히 2 개의 할당을 수행합니다. –

+1

할당은 [boost :: bind] (http://stackoverflow.com/questions/5894956/does-boostbind-cause-overhead)에서 나올 수 있습니다. asio 오버 헤드를 낮게 유지하려는 경우 [Marat Abrarov] (http://sourceforge.net/projects/asio-samples)의 예를 살펴 보는 것이 좋습니다. 공식 asio 예제가 아닌 고성능 asio 사용을위한 몇 가지 [patterns] (http://article.gmane.org/gmane.comp.lib.boost.asio.user/5512)를 보여줍니다. – jcm

관련 문제