gpt4 book ai didi

node.js - 在 NodeJs 中实现关键部分的正确方法

转载 作者:搜寻专家 更新时间:2023-10-31 23:26:48 24 4
gpt4 key购买 nike

我有一个操作/任务需要运行,它由一个事件触发(我认为最后这件事并不重要)。

事实上,这个任务由几个 io 操作组成,主要是网络调用。另外,我想以原子方式运行此任务,从头到尾一次一个,在当前任务完成之前,新任务不应开始。

我通常会使用某种关键部分来执行此操作,但我认为 js 或 Node 库中没有这样的概念。你建议我应该如何处理这样的情况?

谢谢

编辑:我在不同的帖子中多次看到“不需要关键部分,这是单线程”的观点,我认为这只是部分正确,它只适用于同步操作。

假设使用关键部分的典型场景,您需要做两件事 A) 检查条件的有效性,B) 仅当 A 为真或假时才应用操作,该操作会翻转健康)状况。您不希望 2 个线程同时得出 A 为假的结论,并且 B 应该完成,因此您将 A 和 B 包装在临界区中以使它们成为原子。在 node.js 中,如果 A 处于同步状态,那么你很好,没有其他线程会运行,你可以安全地执行 B。但是如果 A 是异步的,在它的回调触发之前,A 的另一个事件可能会出现在事件队列中,在第一个事件被 B 执行之前。

最佳答案

作为mscdex注意到队列会更好,Async 有 queue()那将能够处理您描述的情况。为了保证“临界区”的感觉,只需为队列设置 concurrency: 1

关于node.js - 在 NodeJs 中实现关键部分的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com