multithreading - 在 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
功能的详细文档。
解决方案
好的,我想通了:
a = 0
l = ReentrantLock()
lock(l) do
global a # Needed if using REPL
a += 1
end
推荐阅读
- activemq - 一个 MQTT 订阅者可以同时接收同一主题的多条消息吗?
- ruby-on-rails - Ruby On Rails 设计:如何在注册期间避免电子邮件唯一性验证并重写以检查它是否只有在角色“X”时才唯一
- url-rewriting - 网址重写规则不重定向
- bash - 如何按列号过滤这些数据?
- angular - 在 Angular 7 中导入 html-/ts-file
- node.js - express 和 http 服务器的使用一起
- database - 如何知道其他表中引用的父表列
- hadoop - What is the complete list of streaming command line options possible for Hadoop YARN version?
- angular - Angular 7 应用程序发布后无法访问 Web API
- sql - 修改/更改命令在 HIVE 中无法将字符串类型数据转换为 TIMESTAMP