Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/threads-ffi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoumith <soumith@fb.com>2014-11-05 02:09:23 +0300
committersoumith <soumith@fb.com>2014-11-05 02:09:23 +0300
commit4145fdde7d90d612c6943bdb4d11c58098829180 (patch)
treeedafc1f276919df0de5e3271505227fe4cf47d1e /init.lua
parentc57f62a16dd476cef115355b7e264b72b6ebfe01 (diff)
addjob now is error-aware
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua7
1 files changed, 4 insertions, 3 deletions
diff --git a/init.lua b/init.lua
index 484f692..4a6669a 100644
--- a/init.lua
+++ b/init.lua
@@ -41,7 +41,7 @@ function Threads:__call(N, ...)
self.mainworker = Worker(N)
self.threadworker = Worker(N)
-
+
self.threads = {}
for i=1,N do
local L = C.luaL_newstate()
@@ -81,7 +81,7 @@ function Threads:__call(N, ...)
local ffi = require 'ffi'
local sdl = require 'sdl2'
require 'threads.worker'
-
+
local function workerloop(data)
local workers = ffi.cast('struct THWorker**', data)
local mainworker = workers[0]
@@ -132,6 +132,7 @@ function Threads:dojob()
end
function Threads:addjob(callback, endcallback, ...) -- endcallback is passed with returned values of callback
+ if #self.errors > 0 then self:synchronize() end -- if errors exist, sync immediately.
local endcallbacks = self.endcallbacks
-- first finish running jobs if any
@@ -143,7 +144,7 @@ function Threads:addjob(callback, endcallback, ...) -- endcallback is passed wit
local endcallbackid = table.getn(endcallbacks)+1
endcallbacks[endcallbackid] = endcallback or function() end
endcallbacks.n = endcallbacks.n + 1
-
+
local func = function(...)
local res = {pcall(callback, ...)}
local status = table.remove(res, 1)