跨程序/线程共享变量的最佳方法?

时间:2018-06-22 02:14:48

标签: javascript node.js multithreading file express

我目前有一个程序,该程序运行处理实时数据的算法,并且每小时运行一次功能,该功能根据新的历史数据优化算法的参数。

由于它是在单个线程中运行,因此优化器在运行时会暂停实时数据处理算法,但只需要一分钟左右就可以了。

但是,我想极大地扩展优化器,这将真正增加运行时间。因此,我正在考虑将其分为自己的程序。然后它将在自己的线程中运行,并且不会中断算法的执行。

要与算法共享优化器的结果,我想每次运行优化器时都会将它们保存到文件中,然后算法可以定期读取文件。

如何确保算法不会在优化器向其写入数据的同时尝试读取该文件? OS文件系统已经不允许这样做吗?

还有没有更好的方法可以在不同程序之间共享变量?还是最好在同一程序中将优化器拆分为一个单独的线程?任何建议将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

首先要在使用命名管道的程序之间共享变量。

如果要使用命名管道以外的其他任何东西(可能只是普通文件,则必须处理竞争条件或从文件中读取错误数据),则必须实现锁定机制,如果您要使用的是锁定文件,要写入文件,请创建一个锁定文件,读取该文件的例程将检查该锁定文件是否存在,如果存在写入该文件的例程,则该锁定文件将不会从中读取。完成后,您可以将其删除。

您还可以使用cluster模块,可以轻松地在两个进程(子进程和父进程)之间进行通信,而无需创建文件。