【问题标题】:What's the scope of a Public Lock - the function, the file or the project?公共锁的范围是什么——功能、文件还是项目?
【发布时间】:2012-05-03 03:06:03
【问题描述】:

我有一个 Google Apps 脚本项目(在 Google 站点中)。该项目有一个文件。该文件包含函数A 和函数B。 functionA 对一组文件进行操作,而 functionB 对一组完全不同的文件进行操作。为了防止并发修改,每个函数都使用 Lock 服务来获取它自己的公共锁。每个函数每 1 分钟触发一次。

我发现 FunctionA 似乎无法获得锁,而 FunctionB 有锁。

我的问题是,这是预期的吗?如果是这样 a) 什么是文档参考和 b) 我如何设计我的系统以便 functionA 和 functionB 实际上可以同时运行?我是否需要将功能上移到单独的文件甚至不同的项目中?

我锁定 functionA 的目标是停止 functionA 的多个并发运行。与函数 B 类似。我不在乎functionA是否与functionB同时运行。事实上,我希望它们同时运行,以便从用户的角度认为事情运行得很快。

我读过the LockService doc,但它非常有限——它只是说锁的范围是“一段代码”或“一段代码”。

【问题讨论】:

    标签: concurrency google-apps-script


    【解决方案1】:

    它是“每个项目”。不幸的是,您不能为同一个脚本拥有两个锁(除非它是不同的用户并且您获得了私人锁,这不是您的情况)

    a) 我不是 API 设计师(我是杰出贡献者),但我很确定这是设计使然。由于资源限制,他们可能会以这种方式限制它。

    b) 因此,您必须创建不同的脚本/项目才能拥有不同的锁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2019-02-05
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2015-03-04
      • 2011-07-07
      相关资源
      最近更新 更多