用于循环的线程内的变量范围?

时间:2017-05-23 00:07:37

标签: multithreading julia

在以下示例中

shared_arr = zeros(4000)
Threads.@threads for thread = 1:4
    tmp_arr = rand(1000)
    for i = 1:1000
        shared_arr[(thread - 1)*1000+i] = tmp_arr[i]
    end
end

我相信shared_arr在所有主题之间共享。是tmp_arr分配了4次,以便每个帖子都有自己的tmp_arr

1 个答案:

答案 0 :(得分:0)

根据文档中描述的scoping rules,每当调用for循环时都会引入一个新的作用域。由于tmp_arr未在循环之前声明,因此在for循环的每次迭代中它将是一个不同的值。请注意,根据@Lyndon White的评论,rand可能不是线程安全的。