Node.js 2015年的节点和线程
我希望有一个while(1)forever循环来与设备[TCP]并行通信。想法是为每个IP地址[TCP连接]启动线程,并让它们永远通信。目前我必须支持的设备数量是200+ 问题是Node.js 2015年的节点和线程,node.js,Node.js,我希望有一个while(1)forever循环来与设备[TCP]并行通信。想法是为每个IP地址[TCP连接]启动线程,并让它们永远通信。目前我必须支持的设备数量是200+ 问题是 nodej介绍如何实现while(1)策略,以及如何根据其事件计算超时和响应时间 NodeJS将能够处理200多个线程?我以前在Windows应用程序中这样做过,它工作正常我有一台服务器级机器[16核] 有没有建议的最佳做法 我是否应该保留nodej来处理web流量,并将通信服务器[TCP和Thread]代码移动到某种
如果您认为
而循环是这里的关键,那么您就严重误解了Node.js事件循环模型。这完全无关。内置了一个功能强大的事件调度系统,无需在此基础上构建自己的系统
Node.js可以处理线程吗?某种程度上。不是真的。如果您有需要线程的CPU密集型任务,您应该考虑,但多进程模型是传统上由Node推动的
请记住:节点是关于非阻塞异步操作的,所以线程不会在这方面帮助您。这与Java不同,Java中有数千个线程在进行阻塞调用。您不需要创建线程来处理每个连接,只需要编写异步代码来在同一个线程上处理它们
您应该尝试将您的解决方案模块化。任何繁重的任务都应该包含在可以通过事件总线调度的任务中,这样您就可以管理工作流了
看看这里-,可能是直到
,直到
和永远
都是你要找的
是的,您可以使用集群扩展16个进程(每个CPU核心一个)
使用回调和Caolan异步,不编写同步代码
很难回答的问题是,围棋语言可能适合这项任务——另请参见
线程和while(true)
循环很少是node.js中的答案。Node.js的设计目的不是通过线程处理并发连接,而是通过基于事件的异步操作。它通常能够在单个核心上处理数千个并发连接()