1

我正在阅读 Elixir “入门”教程,其中使用了以下代码片段:

test "removes buckets on exit", %{registry: registry} do
  KV.Registry.create(registry, "shopping")
  {:ok, bucket} = KV.Registry.lookup(registry, "shopping")
  Agent.stop(bucket)
  assert KV.Registry.lookup(registry, "shopping") == :error
end

现在,create/2使用cast操作而lookup使用call。这意味着执行异步调用,然后立即执行假定异步操作成功执行的同步调用。当代码本身正确时,计时问题是否会导致测试失败,或者是否存在我遗漏的某些cast方面call

4

1 回答 1

3

由于 GenServer 顺序处理所有消息,因此lookup调用将阻塞,直到前一个cast完成,因此不存在时间问题。

于 2014-09-12T14:22:53.323 回答