2016-03-07 50 views
1

我正在使用一个休息接口来执行一个进程,可能需要一些时间,一旦进程启动,另一个实例不应该能够启动并返回一个通知,进展中。阻止在nodejs中同时运行两个函数实例

有没有一种方法可以在不使用锁(文件或数据库)的情况下监视正在执行的进程(运行状态)?

+1

当然,在长期运行过程中可能与具有回调或返回一个承诺,然后所有你需要的是一个递归函数的函数完成,但没有任何代码很难写出一个例子。 – adeneo

+0

你在谈论单独的节点进程吗?如果没有,一个简单的标志变量将作为一个锁(但你不能没有一个) – Bergi

+0

没有足够的设置描述来理解如何回答这个问题。如果你自己的代码负责启动子进程,你可以直接在启动子进程后监视子进程,并检查是否有其他代码正在运行。如果它是启动它的node.js进程之外的某个东西,则可以使用各种操作系统工具来检查当前正在运行的特定进程签名的进程列表。 – jfriend00

回答

1

也许这会工作

var isRunning = false; 

function doStuff(){ 
    if(isRunning){ 
     return 'this function is already running'; 
    } 

    isRunning = true; 
    // do things with a promise or whatever.then(function(){ 
     isRunning = false; 
    }) 
} 
+1

我想我已经过度考虑了手头的问题。 – Daniel

相关问题