繁体   English   中英

“调用堆栈”和“任务队列”之间的区别

[英]Difference between “call stack” and “task queue”

我是一名开发人员,难以区分术语“ 调用堆栈”和“ 任务队列” 有谁可以帮助我解释其中的区别?

提前致谢。

例如。

在JavaScript中,有一个称为超时的函数。 当您在“调用堆栈”上调用函数超时时,它将在“作业队列”中注册。 它不会立即触发,但一旦到达时间就会触发。

timeout(function(){
    console.log("one");
}, 100);

console.log("two");

在调用堆栈中,首先触发console.log("one") ,但在作业队列中,结果将在two之后显示。

作业队列(有时是批处理队列)是由作业调度程序软件维护的数据结构,其中包含要运行的作业。

https://en.wikipedia.org/wiki/Job_queue

调用堆栈是一种堆栈数据结构,用于存储有关计算机程序的活动子例程的信息。 这种堆栈也称为执行堆栈,控制堆栈,运行时堆栈或机器堆栈,通常简称为“堆栈”。

https://en.wikipedia.org/wiki/Call_stack

简而言之,作业队列是要做的事情(通常存储的持久性)队列,而调用堆栈是例程的堆栈。

作业将分配有变量,调用堆栈将是抽象实现。

因此,作业可以从调用堆栈中“调用”方法。

编辑:可能会有一份工作清单;

  • 将foo.jpg调整为100x100
  • 将bar.png调整为100x100

每个作业将多次运行调用堆栈;

第一份工作

  • 将foo.jpg复制到内存中
  • 调整大小为100x100
  • 将调整大小的foo.jpg存储在thumbs文件夹中

第二份工作:

  • 将bar.png复制到内存中
  • 调整大小为100x100
  • 将调整大小的foo.jpg存储在thumbs文件夹中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM