Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 火炬多线程_Multithreading_Lua_Torch - Fatal编程技术网

Multithreading 火炬多线程

Multithreading 火炬多线程,multithreading,lua,torch,Multithreading,Lua,Torch,我有一个表H_next,我进行一些计算(调用add())并将值存储在H_next中,该值在所有线程中共享 local function add(a,b) return (a+b) end function indexer:cal() local H_next={} local temp_H_next={} local count = 1 for i = 1,100 do local val =10 self.pool:ad

我有一个表H_next,我进行一些计算(调用add())并将值存储在H_next中,该值在所有线程中共享

local function add(a,b)
    return (a+b)
end

function indexer:cal()
    local H_next={}
    local temp_H_next={}
    local count = 1
    for i = 1,100 do
        local val =10
        self.pool:addjob(function()
        H_next[i] = add(i,val+1)
        --print (H_next[i])
        return H_next
       end
      ,
      function(val)
          for i=1,#val do
          temp_H_next[count] = val[i]
          count  = count + 1
         end
        --temp_H_next[count] = val
        --[[H_next[count] = val
        count = count + 1--]]
        end)
    end

   self.pool:synchronize()
   self.pool:terminate()

  for i,v in pairs(temp_H_next) do
      print (i,v)
  end
end
这只打印2个值

我只能在修改函数时获得所有值,如下所示

local H_next={}
local temp_H_next={}
local count = 1
for i = 1,100 do
    local val =10
    self.pool:addjob(function()
    H_next[i] = add(i,val+1)
    --print (H_next[i])
    return H_next[i]   -- When I return one by one 
    end
  ,
  function(val)
    --[[for i=1,#val do
      temp_H_next[count] = val[i]
      count  = count + 1
    end--]]

    temp_H_next[count] = val
    count = count + 1
  end)
end
第二种方法的问题是,在子线程和主线程之间进行通信需要花费大量时间,我想填充该特定线程的H_next表,然后使用endcallback传输这些值或在temp_H_next中复制主线程中的这些值。 有没有更好的方法来做到这一点,我不必一次发送一个接一个的值