From 2014c83224be9026d46c4846c305760145aa62ad Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Wed, 21 Jan 2026 17:24:36 +0100 Subject: [PATCH] Use multiple threads for Relm async tasks depending on system --- src/main.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index dbee00c..120bf84 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,9 @@ mod persist; mod ui; mod views; +use std::cmp::max; +use std::thread; + use gtk4::gdk::Display; use gtk4::gio::File; use gtk4::{CssProvider, Settings, gio}; @@ -18,8 +21,13 @@ fn main() { include_app_css(); - // TODO: Set this to nr of cores if using Relm commands heavily. - // RELM_THREADS.set(4).unwrap(); + // Set number of threads used by Relm for async tasks to the number of available + // CPU cores minus two, thereby reserving one for the main thread and one for + // the database connection thread spawned by async_sqlite. + let cores = thread::available_parallelism() + .map(|cores| cores.get() - 2) + .unwrap_or(1); + relm4::RELM_THREADS.set(max(cores, 1)).unwrap(); app.run::(()); }