diff 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
line wrap: on
line diff
--- a/src/luan/modules/Thread.luan	Wed Jun 26 19:14:13 2019 -0600
+++ b/src/luan/modules/Thread.luan	Mon Jul 01 15:37:51 2019 -0600
@@ -1,5 +1,6 @@
 require "java"
 local ThreadLuan = require "java:luan.modules.ThreadLuan"
+local ReentrantLock = require "java:java.util.concurrent.locks.ReentrantLock"
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
 local set_metatable = Luan.set_metatable or error()
@@ -90,4 +91,14 @@
 end
 
 
+function Thread.new_synchronizer()
+	local lock = ReentrantLock.new()
+	return function(fn)
+		return function(...)
+			return run_in_lock(lock,fn,...)
+		end
+	end
+end
+
+
 return Thread