2
堆栈结构是否用于异步进程?
埃里克·利珀特(Eric Lippert)对该问题有一个很好的回答,描述了堆栈的用途。我已经了解了一年(通常来说)是什么堆栈以及如何使用堆栈,但是他的部分回答让我怀疑这种堆栈结构在当今以异步编程为标准的情况下是否被较少使用。 从他的回答: 堆栈是在没有协程的语言中延续性的一部分。 具体来说,没有协程的部分让我感到奇怪。 他在这里解释了更多: 协程是可以记住它们所在位置的功能,可以暂时控制另一个协程的功能,然后在稍后中断的位置恢复,但不一定是在所谓的协程产量之后立即执行。想想C#中的“收益回报”或“等待”,它们必须记住当请求下一项或异步操作完成时它们在哪里。具有协程或类似语言功能的语言需要比堆栈更高级的数据结构才能实现延续。 就堆栈而言,这是极好的选择,但是当堆栈太简单以至于无法处理需要更高级数据结构的这些语言功能时,我将不得不回答的问题是什么? 随着技术的进步,堆栈会消失吗?用什么代替它?它是混合类型的东西吗?(例如,.NET程序是否使用堆栈,直到遇到异步调用,然后切换到其他结构,直到完成,此时堆栈才退回到可以确定是否有下一个项目的状态,依此类推? ) 这些场景对于堆栈而言太高级了,这是很合理的,但是什么能代替堆栈呢?几年前,当我了解到这一点时,堆栈就在那里了,因为它闪电般快速且轻巧,因为它支持对即将完成的任务进行高效管理(双关语?),所以它在应用程序中从堆分配了一块内存。有什么变化?
10
stack