Mercurial Hosting > luan
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 = {} |