1
3
这在node.js中不可能发生。 node.js是单线程和事件驱动的,所以一次只运行一段javascript代码。您不必担心多线程系统的典型先发制人并发问题。 也就是说,如果您使用异步代码,那么node.js中仍然存在并发问题,因为node.js异步模型将控制权返回给系统以处理下一个事件,并且异步回调会在将来的某个事件上被调用。但是,并发性问题是非先发制人的,因此您可以完全控制它们何时发生。
如果您在
线程池中的线程都是在后台运行的本机代码。它们只触发通过事件队列将事件排队来运行的实际javascript。因此,因为所有运行的javascript都是通过事件队列序列化的,所以每次只能运行一段javascript。事件队列的基本方案是,解释器运行一段javascript,直到它将控制权返回到系统。此时,解释器会查看事件队列,如果有事件等待,它会将该事件拉出并调用与该事件相关联的回调。同时,如果后台运行的是本机代码,那么当它完成时,会向事件队列添加一个事件。在当前的javascript将控制权返回到系统之前,不会处理该事件,然后它可以从事件队列中获取下一个事件。所以,正是这个事件队列一次只序列化一段javascript。 |
2
1
node.js是单线程的,这意味着运行应用程序的任何单个进程都不会像您预期的那样有数据竞争。事实上,快速检查
只有当您计划与多个进程共享数据时,才应该真正担心这一点。在这种情况下,您可以使用Alan的lockfile方法 this stackoverflow thread here . |
3
0
如果阻塞线程,则不会执行任何请求,所有请求都将在队列中。 在node.js中阻塞线程不是很好的实践
|
AlaaKudo810 · 无法更新猫鼬中的对象 1 年前 |
Foobar · 如何在Fastify中为请求附加“项目”密钥? 1 年前 |
chrispytoes · 从服务器端获取登录用户 1 年前 |