Mercurial Hosting > luan
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 |