问题标签 [event-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1339 浏览

javascript - NodeJS 中的事件队列

NodeJS 使用事件驱动模型,其中只有一个线程执行事件。我知道执行的第一个事件将是用户 JS 代码。来自网络服务器的nod​​eJS网站的简单示例如下

执行的第一个事件将执行上述步骤。稍后,事件循环将等待事件入队。我的问题是哪个线程使事件入队?是否有一个单独的线程可以做到这一点?如果是,多个线程也可以将事件排入队列吗?

谢谢你。

0 投票
1 回答
1305 浏览

events - SimPy 中的事件队列

我来自 SystemC 世界,我正在尝试用 Python 编写一些简单的代码。我想知道 Python 是否有类似于 peq_with_get() (来自 SystemC)的东西,它基本上是一个队列,保留了对事件的所有触发器。我开发了以下代码来测试它,但它似乎不起作用。想知道你们是否可以指导我了解 simpy 是否有事件队列。

0 投票
1 回答
368 浏览

aws-lambda - AWS lambda 运行上一个事件的队列剩余函数

我正在为我的应用程序使用 AWS lambda,以使用 Promise 从 dynamo 获取多个记录。最初我设置我的 context.callbackWaitsForEmptyEventLoop = true,所以处理程序将等到 promise 被解决。一旦承诺得到解决,我将设置 context.callbackWaitsForEmptyEventLoop = false 然后调用 callback(null);

如果我在 promise 解决后没有设置 callbackWaitsForEmptyEventLoop = false,那么即使在我调用 callback(null) 之后该函数也会超时(某些库函数可能仍在事件队列中)。

因此,问题是如果下次再次使用相同的运行时,事件队列中先前剩余的函数将被恢复,而不是重新开始。有没有办法解决这个问题,甚至清空之前的事件队列?

0 投票
2 回答
863 浏览

java - java中的任何集合或数据结构都是非阻塞的

在事件处理中,一个函数将值放入一个集合中,另一个函数从同一个集合中删除。这些项目应该按照它们从源(套接字)接收到的顺序放置在集合中,并以相同的方式读取,否则结果会改变。

队列是大多数人推荐的集合,但同时,队列在添加项目时被阻塞,因此其他功能必须等到添加完成,这使其效率低下,并且操作延迟会随着时间的推移而增加。

例如,一个线程从一个队列中读取,而另一个线程写入同一个队列。任何一个操作都在队列上一次执行,直到它释放一个锁。是否有任何数据结构可以避免这种情况。