2

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

4

1 回答 1

3

异步操作可能需要分配临时对象。<...> 与处理程序关联的所有临时对象将在执行对处理程序的调用之前被释放。这允许将相同的内存重新用于处理程序启动的后续异步操作。

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

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

每个示例都强调某些特定的Asio功能。对于现实生活中的应用程序,过早的优化通常不是一个好主意,因为它们会带来不必要的复杂性。因此,上述优化以及任何其他优化都应仅在适当的情况下使用。

于 2013-06-24T07:57:14.840 回答