ascs 简明开发教程(十一):如何限速

31 篇文章 0 订阅
31 篇文章 1 订阅

QQ交流群:198941541

消息发送总是由使用者触发,所以速度限制由你自己实现。

重点是消息接收的限速,默认情况下,ascs库总是尽量的多接收多派发消息,如果你想要接收限速,可以有几种方法:

1. 同步消息接收(需定义宏ASCS_SYNC_RECV),这个跟消息发送一样,由使用者触发,所以你可以自己实现速度限制;

2. 被动消息接收(需定义宏ASCS_PASSIVE_RECV),ascs会在连接建立起来之后,自动调用一次recv_msg,以后将完全由使用者自己调用recv_msg来接收数据,可多次调用,但只会有一次读取的效果,直到前一次读取结束(出错或者解包器的completion_condition函数返回0)之后又可发起一次;

3. 故意在on_msg_handle里面返回false或者0(批量派发时),这样ascs会延迟一段时间再次派发消息,延时通过宏ASCS_MSG_HANDLING_INTERVAL或者msg_handling_interval(unsigned)函数控制,单位为毫秒 。延时还有可能会造成接收缓存满(限速达到的正常的结果),ascs将暂停数据接收并延迟一段时间再恢复,延时通过宏ASCS_MSG_RESUMING_INTERVAL或者msg_resuming_interval(unsigned)函数控制,单位为毫秒;

4. 通过调整service线程数量(start_service调用时传入的参数)实现限速,这种方法不能实现大的限速范围;

5. 如果创建了单独的工作线程处理业务,可以把业务挪回到service线程里面处理,这样你的工作线程就不用了,限速的同时减少了资源(线程)占用,这种方法不能实现大的限速范围。

上一篇:ascs 简明开发教程(10) 下一篇:ascs 简明开发教程(12)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值