【发布时间】:2016-06-24 00:02:32
【问题描述】:
我有一个在多个节点子进程中运行的小节点脚本,但我无权访问父进程。
脚本的目标很简单,从数组中随机返回一个元素。但是,返回的元素不能被任何其他子进程使用。
我能想到的唯一解决方案是使用 redis 或数据库,因为这是一个非常小的脚本,我想避免这种情况。
这是我希望我的代码看起来像的示例:
var accounts = [acc1, acc2, acc3]
function() {
var usedAccounts = sharedStore.get('usedAccounts')
var unusedAccounts = filter(accounts, usedAccounts)
var account = getRandomAccount(unusedAccounts)
usedAccounts.push(account)
sharedStore.set('usedAccounts', usedAccounts)
return account
}
到目前为止,我想到的解决方案都行不通,因为兄弟进程最初都得到一个分配给 usedAccounts 的空列表。
【问题讨论】:
-
必须在节点中吗?
-
同一台机器?如果是这样,计时器、“锁定文件”和共享文件的组合将起作用。尽管作为kludge。使用 Timer 获取共享文件上的锁,编辑共享文件,然后释放锁。你必须防止你的进程死亡而不释放锁。
-
我以前从未做过这样的事情。计时器究竟是如何使用的?
标签: node.js concurrency