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

[复制链接]
820|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 | 显示全部楼层
嶻套多了,肯定会出问题的
heping517 发表于 2015-8-30 20:32 | 显示全部楼层
呵呵,学习了
leijixiaomile 发表于 2015-8-31 17:30 | 显示全部楼层
学习了,楼主可否分享下锁相关的资料, @关小波522  二楼大神可否说的再详细点,最后你说的:“和下面这个无限循环程序比较下:运行后,输入a,回车。这是别人的一个提问的内容:
#include”
这是程序没有写完全么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

879

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部