为什么我应该在boost :: asio中使用自定义处理程序分配器(custom_alloc_handler)?

时间:2013-06-23 20:55:28

标签: boost boost-asio

为什么我应该使用boost :: asio中的示例的自定义处理程序分配器(custom_alloc_handler):http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/example/allocation/server.cpp 这里显示 - 如何做,但不解释原因。如果它总能带来一些优势,那么为什么不在其他例子中使用它呢? 自定义分配器不在以下示例中:聊天,Web服务器等。 http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/examples.html#boost_asio.examples.buffers

1 个答案:

答案 0 :(得分:3)

Asynchronous operations may need to allocate temporary objects. <...> All temporary objects associated with a handler will be deallocated before the upcall to the handler is performed. This allows the same memory to be reused for a subsequent asynchronous operation initiated by the handler.

换句话说,上述技术是一种优化,允许用户最小化分配/解除分配的数量,从而提高性能并减少堆碎片。

  

如果它总能带来一些优势,那么为什么不在它中使用它呢?   其他例子?

每个示例都强调Asio功能的某些特定部分。至于现实应用,过早优化通常是一个坏主意,因为它们带来了不必要的复杂性。因此,上述优化以及任何其他优化仅应在适当的时候使用。