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