multithreading - 多线程 Firebase 功能
问题描述
所以我正在开发一个 Firebase 函数,它接受来自用户的请求并更新这些用户正在收听的分支下的几个节点。
我的问题是,如果该函数同时接收到两个客户端请求,则会触发两个函数同时执行和更新数据。
我知道这通常是通过事务解决的,但是我的更新是在各个节点上完成的,而不仅仅是一个值(即计数器)。
在传统的多线程编程中,这个问题是通过锁定代码的执行来解决的,因此它只能由一个线程执行,当当前线程完成时,下一个线程会继续执行。
这是 Firebase Functions 中的一个选项吗?如果是这样,怎么办?
解决方案
目前在任何环境中的 Cloud Functions 中都没有线程,包括 node 和 python。您不应该依赖 Cloud Function 中的进程级别锁定 - 使用数据库事务来确保更新是原子的和一致的。您的每个函数调用都将彼此完全隔离。
推荐阅读
- python - pipenv 仅在主目录中安装 .venv
- php - Laravel 的干预 - JPG 提供的不支持的图像类型
- exception - 在 wso2 上抛出异常
- twitter-bootstrap - 当 .card-body 内容溢出时,在 .card-header 上同时设置 height 和 d-flex 不起作用
- rust - 如何对包含 &mut 枚举的元组进行模式匹配并在匹配臂中使用该枚举?
- laravel-5 - 无法扩展 Laravel 模型
- spring-boot - Spring boot aspectj gradle编译时编织问题
- javascript - 如何在 vh 和 vw 中而不是在像素中获得位置?
- amazon-web-services - 如何选择通过 Amazon Pinpoint 重新接收 SMS 消息
- javascript - 我应该在我的函数中指定值类型吗?JavaScript/JQuery