首页 > 解决方案 > 在 julia 1.5.2 中获取锁时出错

问题描述

我正在按照文档获取对变量的锁定,但它失败了:

a = 0
lock(a) do
    a += 1
end

错误信息:

ERROR: MethodError: no method matching lock(::var"#3#4", ::Int64)
Closest candidates are:
  lock(::Any, ::Base.GenericCondition) at condition.jl:78
  lock(::Any, ::Base.AbstractLock) at lock.jl:158
  lock(::Any, ::WeakKeyDict) at weakkeydict.jl:76
Stacktrace:
 [1] top-level scope at REPL[3]:1

错误消息很清楚,但为什么文档中提供的代码会失败。此外,不确定在哪里可以找到有关该lock功能的详细文档。

标签: multithreadinglockingjulia

解决方案


好的,我想通了:

a = 0
l = ReentrantLock()
lock(l) do
    global a # Needed if using REPL
    a += 1
end

推荐阅读