.net 异步 递归调用 会有什么栈溢出这样的问题吗 或是其他的

KFC豪华午餐 2015-12-06 12:46:46
比如socket 异步接收 在这个接收完成后再次调用接收函数,这样是形成递归调用了吗?会有什么问题吗?
...全文
132 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
那么也是深度非常浅的递归 --> 那么也是深度非常浅只有1级的递归
回复
比如说你要写一个foreach循环,当递归深度并不会使得栈溢出时,如果你偏要写成递归结构而不是foreach语句,那么这可能是选择了一个稍微慢一点的语句而没有选择更高效率的语句而已。仅此而已。但是假设你要写一个比较复杂一点的算法,而不是像foreach这么低级的语句,你使用递归,那么通常是很好的解决方案。例如动态加载树形菜单时,或者在决策树上搜索决策路径时,这类算法就是如此。 异步操作,本身是注册回调。就算是你看成是递归(假设仅仅关心数据队列的大小问题),那么也是深度非常浅的递归。毫无问题。
回复
异步操作不会形成递归。因为主过程结束了,而不是函数嵌套。这是创建一个任务对象并注册给系统维护的相应的队列,跟函数递归的机制完全不同。 另外,形成递归没有什么不好。递归的算法,它再恰当时候结束了递归,那么递归就是一个很棒的结构。只是说递归的深度超过栈的空间时才会溢出,这时候才会出现真正的问题。
回复
相关推荐
发帖
分析与设计
创建于2007-09-28

1.3w+

社区成员

.NET技术 分析与设计
申请成为版主
帖子事件
创建了帖子
2015-12-06 12:46
社区公告
暂无公告