打印

任务上锁函数在什么时候调用?为什么会有255级的函数嵌套?

[复制链接]
683|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zb0830|  楼主 | 2015-8-30 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
任务上锁函数在什么时候调用?为什么会有255级的函数嵌套?上了锁的任务不会有其他任务切换,为什么还会有那么多级的任务锁呢?锁一次就好了,什么情况下会发生多次上锁的情况呢?
继续问一个问题 : 调用函数自己,循环调用6000次A();这种情况属于递归还是函数嵌套 ?如果能够发生255级函数嵌套,是不是因为调用A()255次导致255级深度,而不是调用其他函数?因为调用上锁函数后,就会有一个上锁标志置位 ,而这个标志限制了其它函数的嵌套,之所以会发生255级函数嵌套,是因为调用了自己还是因为中断函数的进入呢?
沙发
关小波522| | 2015-8-30 20:20 | 只看该作者
说一下我的看法吧:
有些编译器里面很容易就能写出无限循环的程序。
但楼主这种情况不行。为什么呢?
像这种嵌套调用时,比如循环调用了A()6000次,在第6001次调用时,第一次调用的A函数并没有退出。一直保存在堆栈里面。不像一般函数那样执行玩了就注销掉了所用的内存。可以说,第6001次的A()也是由第一次的A()间接调用的

而且我们知道,控制台应用程序是仿dos的(当然,这样说并不准确)。它的栈空间一定是有个上限的。达到一定程度,程序就终止执行。

和下面这个无限循环程序比较下:运行后,输入a,回车。这是别人的一个提问的内容:
#include

使用特权

评论回复
板凳
上山砍老虎| | 2015-8-30 20:24 | 只看该作者
这个学习了,不过为什么嶻套那么层呢

使用特权

评论回复
地板
上山砍老虎| | 2015-8-30 20:29 | 只看该作者
嶻套多了,肯定会出问题的

使用特权

评论回复
5
heping517| | 2015-8-30 20:32 | 只看该作者
呵呵,学习了

使用特权

评论回复
6
leijixiaomile| | 2015-8-31 17:30 | 只看该作者
学习了,楼主可否分享下锁相关的资料, @关小波522  二楼大神可否说的再详细点,最后你说的:“和下面这个无限循环程序比较下:运行后,输入a,回车。这是别人的一个提问的内容:
#include”
这是程序没有写完全么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

879

帖子

2

粉丝