我是Node.js的新手,我敢肯定对此有一个简单的答案,我只是找不到它:(
我正在使用文件系统来保存“程序包”(状态扩展名为“ mypackage.idle”的文件夹),用户可以对这些程序执行操作,这将导致状态变为“ qa”或“部署”等。如果服务器正在接受大量请求,并且同一包中有多个请求,我将如何检查状态,然后执行一个操作,这将更改状态,从而确保在操作之前/期间另一个请求没有更改它发生?
所以在C#中像这样
lock (someLock) { checkStatus(); performAction(); }
谢谢 :)
如果checkStatus()和performAction()是一个接一个被调用的同步函数,那么就像前面提到的那样:它们的执行将不中断地运行直到完成。但是,我怀疑实际上这两个函数都是异步的,组成它们的现实情况是这样的:
function checkStatus(callback){ doSomeIOStuff(function(something){ callback(something == ok); }); } checkStatus(function(status){ if(status == true){ performAction(); } });
上面的代码受竞争条件的影响,因为当执行doSomeIOStuff而不是等待它时,可以满足新的请求。
您可能要检查https://www.npmjs.com/package/rwlock库。