comparison src/luan/modules/Thread.luan @ 1233:3fad7091b419

make Thread.safe implicit
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 08 Apr 2018 01:01:48 -0600
parents 9f5edbef3f55
children 2b5046cd7963
comparison
equal deleted inserted replaced
1232:857eb648d4e5 1233:3fad7091b419
2 local ThreadLuan = require "java:luan.modules.ThreadLuan" 2 local ThreadLuan = require "java:luan.modules.ThreadLuan"
3 local Luan = require "luan:Luan.luan" 3 local Luan = require "luan:Luan.luan"
4 local error = Luan.error 4 local error = Luan.error
5 local set_metatable = Luan.set_metatable or error() 5 local set_metatable = Luan.set_metatable or error()
6 local try = Luan.try or error() 6 local try = Luan.try or error()
7 local Logging = require "luan:logging/Logging.luan"
8 local logger = Logging.logger "Thread"
7 9
8 10
9 local Thread = {} 11 local Thread = {}
10 12
11 Thread.fork = ThreadLuan.fork
12 Thread.schedule = ThreadLuan.schedule
13 Thread.sleep = ThreadLuan.sleep 13 Thread.sleep = ThreadLuan.sleep
14 14
15 function Thread.safe(fn,logger) 15 local function safe(fn)
16 return function() 16 return function()
17 try { 17 try {
18 function() 18 function()
19 fn() 19 fn()
20 end 20 end
22 logger.error(e) 22 logger.error(e)
23 end 23 end
24 } 24 }
25 end 25 end
26 end 26 end
27
28 function Thread.fork(fn,...)
29 fn = safe(fn)
30 ThreadLuan.fork(fn,...)
31 end
32
33 function Thread.schedule(delay,repeated,fn,...)
34 fn = safe(fn)
35 ThreadLuan.schedule(delay,repeated,fn,...)
36 end
37
27 38
28 --[[ 39 --[[
29 Thread.global = {} -- shared across threads 40 Thread.global = {} -- shared across threads
30 local map = ThreadLuan.GlobalMap.new() 41 local map = ThreadLuan.GlobalMap.new()
31 local global_mt = {} 42 local global_mt = {}