0

是否可以在 Google App Engine 中模拟对一段代码的并发访问?我正在尝试对一段增加计数器的代码进行单元测试。代码可能会被应用程序的不同实例同时使用,虽然我已经将数据存储访问部分设置为事务性的并且还使用了 memcache cas,但如果有某种方法可以对其进行测试,我会感觉更好。我曾尝试设置后台线程,但 Testbed 似乎正在为每个线程创建一个新环境。

4

1 回答 1

1

如果它解决了您的问题,请投票:)

GAE 是这样工作的:

  1. 您可以拥有多个具有独立代码空间的程序实例 - 意味着实例无法访问其他实例。
  2. 如果将代码标记为线程安全,则程序实例中可以有多个线程-意味着每个实例都可以访问相同的代码/内存(在您的情况下为计数器)-您需要锁定以避免冲突。
  3. Memcache 是同步的 - 所有程序及其线程都可以使用更新的值 - 没有并发竞争 - 意味着您可以读取最近的缓存值并跟踪它在更改期间是否没有更改。

如何模拟对一段代码的并发访问?- 你不应该模拟你应该在线程或程序级别使用明确的锁定 - 因为很难模拟并发竞争 - 不知道谁将赢得程序或线程竞争,因为在每个环境中结果都是未定义的 - 意味着 Linux、Windows、 Python。

于 2013-07-03T06:54:08.793 回答