comparison src/luan/modules/Thread.luan @ 1372:431d5bec3ca4

add Thread.new_synchronizer
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 01 Jul 2019 15:37:51 -0600
parents ae2321a09723
children 72b699bad1a4
comparison
equal deleted inserted replaced
1371:4c5548a61d4f 1372:431d5bec3ca4
1 require "java" 1 require "java"
2 local ThreadLuan = require "java:luan.modules.ThreadLuan" 2 local ThreadLuan = require "java:luan.modules.ThreadLuan"
3 local ReentrantLock = require "java:java.util.concurrent.locks.ReentrantLock"
3 local Luan = require "luan:Luan.luan" 4 local Luan = require "luan:Luan.luan"
4 local error = Luan.error 5 local error = Luan.error
5 local set_metatable = Luan.set_metatable or error() 6 local set_metatable = Luan.set_metatable or error()
6 local try = Luan.try or error() 7 local try = Luan.try or error()
7 local Time = require "luan:Time.luan" 8 local Time = require "luan:Time.luan"
88 function Thread.run_for_backup(fn) 89 function Thread.run_for_backup(fn)
89 return run_in_lock(backup_lock,fn) 90 return run_in_lock(backup_lock,fn)
90 end 91 end
91 92
92 93
94 function Thread.new_synchronizer()
95 local lock = ReentrantLock.new()
96 return function(fn)
97 return function(...)
98 return run_in_lock(lock,fn,...)
99 end
100 end
101 end
102
103
93 return Thread 104 return Thread