首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Julia @threads

Julia @threads
EN

Stack Overflow用户
提问于 2020-06-25 21:57:29
回答 1查看 252关注 0票数 1

Julia thread中有没有类似于OpenMP中的single命令的东西,它可以确保所有线程在特定代码块之前等待,然后只在一个线程中执行该块?我有一个循环,在一次对所有位置执行更新之前,它会在线程之间分布力计算,如果不终止@threads循环,我找不到任何特性来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 22:49:14

您可以使用锁:

代码语言:javascript
复制
function f()
    l = Threads.SpinLock()
    x = 0
    Threads.@threads for i in 1:10^7
        Threads.lock(l)
        x += 1  # this block is executed only in one thread
        Threads.unlock(l)
    end
    return x
end

请注意,SpinLock机制专用于非阻塞代码(即只进行计算,循环中没有I/O )。如果涉及到I/O,则应该使用ReentrantLock

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62577111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档