楼上有些同学提到函数的堆栈,函数怎么可能会有自己的堆栈呢,函数调用的时候是会有入栈出栈的操作,不过这个栈是属于线程的。 楼主说线程提供的函数,这种说法真是相当奇怪,我是不明白是什么意思,不过回调函数和普通的函数调用是没有区别的,用到的栈当然是调用它的线程的栈。
假设有两个线程,分别是A、B A线程调用B线程提供的函数可能会有下面两种方式: 1、A直接调用B提供的API函数,A通过包涵B中该函数的头文件实现 2、A通过B提供的函数的地址调用B提供的函数(所谓的回调) 通过方式1实现,函数执行使用的应该是A的堆栈,通过2方式调用,函数执行使用的是B的堆栈还是A的堆栈呢?为什么?
是不是说函数无论在什么地方定义都没有关系呢?无论是在哪个线程定义的,函数被调用时所使用的堆栈都是调用该函数线程的堆栈,而与该函数在哪个线程定义的没有关系。 不知道我理解的对不对?
69,373
社区成员
243,080
社区内容
加载中
试试用AI创作助手写篇文章吧