gpt4 book ai didi

multithreading - Julia @threads single

转载 作者:行者123 更新时间:2023-12-03 13:18:35 25 4
gpt4 key购买 nike

Julia Threads 中是否有类似于 OpenMP 中的 single 命令的东西,可以确保所有线程在特定代码块之前等待,然后仅在一个线程中执行该 block ?我有一个循环,它在一次对所有位置执行更新之前在线程之间分配力的计算,并且我找不到任何功能来实现此目的而不终止 @threads 循环。

最佳答案

您可以使用锁:

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

关于multithreading - Julia @threads single,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62577111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com