多线程 Firebase 功能

Posted

技术标签:

【中文标题】多线程 Firebase 功能【英文标题】:Multi-Thread Firebase function 【发布时间】:2019-05-27 21:19:58 【问题描述】:

所以我正在开发一个 Firebase 函数,它接受来自用户的请求并更新这些用户正在收听的分支下的几个节点。

我的问题是,如果函数同时接收到两个客户端请求,则会触发两个函数同时执行和更新数据。

我知道这通常是通过事务解决的,但我的更新是在各个节点上完成的,而不仅仅是一个值(即计数器)。

在传统的多线程编程中,这个问题是通过锁定代码执行来解决的,因此它只能由一个线程执行,当当前线程完成时,下一个线程会继续执行。

这是 Firebase Functions 中的一个选项吗?如果可以,怎么做?

【问题讨论】:

【参考方案1】:

目前在任何环境中的 Cloud Functions 中都没有线程,包括 node 和 python。您不应该依赖 Cloud Function 中的进程级别锁定 - 使用数据库事务来确保更新是原子的和一致的。您的每个函数调用都将彼此完全隔离。

【讨论】:

谢谢Doug,我想我需要重写函数和结构,这样它们就不会相互冲突了。 Google Cloud Functions 的 Python 环境中是否仍然无法使用线程? 抱歉,我对 python 运行时没有任何帮助。 @DougStevenson Go 运行时呢?您是说不支持 goroutine 还是它们只是在一个线程上调度并按顺序运行?

以上是关于多线程 Firebase 功能的主要内容,如果未能解决你的问题,请参考以下文章

应用程序可能在 Andriod 中的主线程(Firebase 数据库)上做了太多工作

Java多线程文件复制功能

javaAPI_多线程基础_多线程基础1

Delphi XE 中的多线程有啥新功能?

java 初学多线程

多线程的同一个功能使用哪个线程