comparison src/luan/modules/Thread.luan @ 1515:78d937870762

Thread.synchronized
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 30 May 2020 17:58:35 -0600
parents 5b8f76e26ab7
children d9a5405a3102
comparison
equal deleted inserted replaced
1514:af45ed10aff6 1515:78d937870762
81 set_metatable(tbl,mt) 81 set_metatable(tbl,mt)
82 return tbl 82 return tbl
83 end 83 end
84 84
85 85
86 local default_time_out = Time.period{minutes=10}
86 local run_in_lock = ThreadLuan.runInLock 87 local run_in_lock = ThreadLuan.runInLock
87 Thread.run_in_lock = run_in_lock 88 local get_lock = ThreadLuan.getLock
88 89
90 function Thread.synchronized(fn,key,time_out)
91 time_out = time_out or default_time_out
92 local lock = get_lock(key)
93 return function(...)
94 return run_in_lock(lock,time_out,fn,...)
95 end
96 end
97
98
99 -- remove
89 function Thread.new_synchronizer() 100 function Thread.new_synchronizer()
90 local lock = ReentrantLock.new() 101 local lock = ReentrantLock.new()
91 return function(fn) 102 return function(fn)
92 return function(...) 103 return function(...)
93 return run_in_lock(lock,fn,...) 104 return run_in_lock(lock,default_time_out,fn,...)
94 end 105 end
95 end 106 end
96 end 107 end
97 108
98 109