为了减少读取时间,我已经将我存储在MongoDB中的一些数据非规范化。每当我执行写操作时,都需要刷新它,以使其与基础数据保持一致。
为了避免任何竞争条件,我想将其转换为单线程的后台任务。在Java中,我只是将Command对象抛出到队列中,并让读者线程一次处理一个。但是在Node中,每当我进行任何类型的数据库操作时,它都会异步发生,因此我会遇到竞争条件问题。
我想做的例子:
申请主题
后台主题
我仍然关注Node的并发模型(如果你不知道的话!)。我如何在Node.js中实现类似的功能。
答案 0 :(得分:0)
我有一个类似的应用程序,我使用child_process分叉后台作业,所以:
然后我会向子进程发送队列中的下一个出价:
// Application Thread
var child = cp.fork('the background thread module');
child.send(nextBid);
在后台线程上听取消息:
// Background Thread
process.on('message', function(bid) {
// Do your background work
process.send(bid);
});
然后在应用程序中监听后台完成情况:
// Application Thread
child.on('message', function(lastBid) {
// Check the queue and do it again
});