社区
分析与设计
帖子详情
.net 异步 递归调用 会有什么栈溢出这样的问题吗 或是其他的
KFC豪华午餐
2015-12-06 12:46:46
比如socket 异步接收 在这个接收完成后再次调用接收函数,这样是形成递归调用了吗?会有什么问题吗?
...全文
173
3
打赏
收藏
.net 异步 递归调用 会有什么栈溢出这样的问题吗 或是其他的
比如socket 异步接收 在这个接收完成后再次调用接收函数,这样是形成递归调用了吗?会有什么问题吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
以专业开发人员为伍
2015-12-06
打赏
举报
回复
那么也是深度非常浅的递归 --> 那么也是深度非常浅只有1级的递归
以专业开发人员为伍
2015-12-06
打赏
举报
回复
比如说你要写一个foreach循环,当递归深度并不会使得栈溢出时,如果你偏要写成递归结构而不是foreach语句,那么这可能是选择了一个稍微慢一点的语句而没有选择更高效率的语句而已。仅此而已。但是假设你要写一个比较复杂一点的算法,而不是像foreach这么低级的语句,你使用递归,那么通常是很好的解决方案。例如动态加载树形菜单时,或者在决策树上搜索决策路径时,这类算法就是如此。 异步操作,本身是注册回调。就算是你看成是递归(假设仅仅关心数据队列的大小问题),那么也是深度非常浅的递归。毫无问题。
以专业开发人员为伍
2015-12-06
打赏
举报
回复
异步操作不会形成递归。因为主过程结束了,而不是函数嵌套。这是创建一个任务对象并注册给系统维护的相应的队列,跟函数递归的机制完全不同。 另外,形成递归没有什么不好。递归的算法,它再恰当时候结束了递归,那么递归就是一个很棒的结构。只是说递归的深度超过栈的空间时才会溢出,这时候才会出现真正的问题。
async-rails:
异步
Rails 3堆栈演示
在将光纤与Rails一起使用时,应注意,如果堆栈增长,则
会
出现堆
栈溢出
错误大于4Kb(尽管对于大多数事情来说已经足够了),但在3.1版本中,情况变得更糟你可以很容易地使
栈溢出
,这里有一个例子。 具有Rails 3.1 + ...
精通Windows.API-函数、接口、编程实例.pdf
6.5.5 声明导出函数、创建lib库,为其他模块提供导入表调用接口 190 6.5.6 通过构建导入表调用DLL导出函数 191 第7章 线程同步 192 7.1 基本原理 192 7.1.1 线程同步的过程 193 7.1.2 同步对象 193 ...
.NET
TCP/IP Socket
异步
循环收取导致
栈溢出
问题
目前解决的方案有几个路子,Stack Overflow 有老外提出的几个路子都特别野,我先说老外提的一个路子的优点,它的确解决了
.NET
TCP/IP Socket
异步
一直循环收取
会
导致
栈溢出
的
问题
,但是IO吞吐量都不怎么上的去了呀...
无限递归一定
会
栈溢出
吗
很简单,因为栈它是一块内存空间,每一次的函数调用都相当于往这个函数里面添加了一个执行上下文,那如果说这一次函数调用还没结束又调用了自身,那又
会
加一个,直到把整个栈加满,空间不够了,就叫做
栈溢出
。
Co、
递归调用
引发的内存泄漏
我们知道,同步的递归写法,如果在退出递归条件失效时,
会
快速因为
栈溢出
导致进程挂掉。而在某些场景下,我们
会
采用
异步
的递归写法来规避这个
问题
: async function recursive() { if( active ) return; // do ...
分析与设计
13,190
社区成员
5,761
社区内容
发帖
与我相关
我的任务
分析与设计
.NET技术 分析与设计
复制链接
扫一扫
分享
社区描述
.NET技术 分析与设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章