equal
deleted
inserted
replaced
30 |
30 |
31 def make_name(name: String = "", base: String = "thread"): String = |
31 def make_name(name: String = "", base: String = "thread"): String = |
32 "Isabelle." + proper_string(name).getOrElse(base + counter()) |
32 "Isabelle." + proper_string(name).getOrElse(base + counter()) |
33 |
33 |
34 def current_thread_group: ThreadGroup = Thread.currentThread.getThreadGroup |
34 def current_thread_group: ThreadGroup = Thread.currentThread.getThreadGroup |
|
35 |
|
36 lazy val worker_thread_group: ThreadGroup = |
|
37 new ThreadGroup(current_thread_group, "Isabelle worker") |
35 |
38 |
36 def create( |
39 def create( |
37 main: Runnable, |
40 main: Runnable, |
38 name: String = "", |
41 name: String = "", |
39 group: ThreadGroup = current_thread_group, |
42 group: ThreadGroup = current_thread_group, |
70 { |
73 { |
71 val m = Value.Int.unapply(System.getProperty("isabelle.threads", "0")) getOrElse 0 |
74 val m = Value.Int.unapply(System.getProperty("isabelle.threads", "0")) getOrElse 0 |
72 val n = if (m > 0) m else (Runtime.getRuntime.availableProcessors max 1) min 8 |
75 val n = if (m > 0) m else (Runtime.getRuntime.availableProcessors max 1) min 8 |
73 val executor = |
76 val executor = |
74 new ThreadPoolExecutor(n, n, 2500L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue[Runnable]) |
77 new ThreadPoolExecutor(n, n, 2500L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue[Runnable]) |
75 executor.setThreadFactory(create(_, name = make_name(base = "worker"), group = current_thread_group)) |
78 executor.setThreadFactory( |
|
79 create(_, name = make_name(base = "worker"), group = worker_thread_group)) |
76 executor |
80 executor |
77 } |
81 } |
78 |
82 |
79 |
83 |
80 /* interrupt handlers */ |
84 /* interrupt handlers */ |