使用boost::asio::write时慎用Comp…

      这是一个同步方法,今天出于某个目的写个很小的测试程序,结果惊奇地发现速度非常之慢。当时我使用的write是:

template<
      typename SyncWriteStream,
      typename ConstBufferSequence,
      typename CompletionCondition>
std::size_t write(
      SyncWriteStream & s,
      const ConstBufferSequence & buffers,
      CompletionCondition completion_condition,
      boost::system::error_code & ec);


      完成条件函数如下:
std::size_t testCompletionCondition
(const boost::system::error_code& error, std::size_t bytes_transferred)
{
      cout << bytes_transferred << endl;
      return 1;
}

      结果发现每写一个字节(write一次写1000字节)就调用testCompletionCondition一次,也就是write一次会调用
testCompletionCondition函数1000次。结果导致每次write操作奇慢无比。
      另外从这个函数的设计来说,asio对socket的同步操作封装得不是很好(asio哭诉:你以为我名字中的a是什么?any?)。
      CompletionCondition完全没必要由用户来指定。事实上我也不想指定它。我只是想用错误码而不是异常的方式获取错误。但write的六个重载函数中硬是没有一个满足我的要求。哎。
     






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值