From f59ef65d6f1c34100774ec31554ace8af9295721 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Struewer <j.n.struewer@gmail.com> Date: Thu, 20 Apr 2023 10:57:31 +0200 Subject: [PATCH] updated taskmanager to use a fixed size custom threadpool --- .../iem/dataprovider/taskManager/TaskManager.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/TaskManager.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/TaskManager.kt index e974fa7f..57da925a 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/TaskManager.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/TaskManager.kt @@ -22,6 +22,10 @@ class TaskManager : CoroutineScope { // TODO: this could be dangerous to give it unlimited memory private val tasks = Channel<String>(Channel.UNLIMITED) private val numCores = Runtime.getRuntime().availableProcessors() + // use a fixed size thread pool context with numCores threads + private val threadPoolContext = newFixedThreadPoolContext(numCores, "TaskManagerWorker") + + private val logger = getLogger(javaClass) @PostConstruct @@ -33,7 +37,8 @@ class TaskManager : CoroutineScope { } } - private fun launchWorker(id: Int) = launch { + private fun launchWorker(id: Int) = launch(threadPoolContext) { + for (task in tasks) { launch { logger.debug("[${Thread.currentThread().name}] Processor #$id received $task") @@ -57,6 +62,7 @@ class TaskManager : CoroutineScope { @PreDestroy fun stop() { job.cancel() + threadPoolContext.close() } } -- GitLab