Start every worker thread through the executors module
Thirty-nine spawn sites in dr-ui, and one in the Android entry point, called std::thread::spawn or a Builder of their own, and most of the threads they started were <unnamed> in a panic message or a profiler. Each now calls executors::spawn with its executor and a role, so the thread is named <executor>:<role> — net:sync, decode:thumbs, io:catalog-open — and knows which executor it is on. The three that already set a name (automation, import, prefetch) keep their name as the role. Behaviour is unchanged: each job still gets a thread of its own when it starts, and spawn panics where std::thread::spawn did. The module's documentation now says how a job is assigned: by what it spends its time on, so a sweep that fetches bytes and then decodes them is Decode, and a sidecar write that touches the catalog is Network. Left as they were: the segmentation and refine workers in masks_ui.rs, which another change is reworking, and test-only threads.
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
//!
|
||||
//! Waiting is the client's job (poll `locate`), which keeps this stateless.
|
||||
|
||||
use crate::executors::{self, Executor};
|
||||
use std::io::{BufRead, BufReader, Write};
|
||||
use std::os::unix::net::{UnixListener, UnixStream};
|
||||
use std::sync::mpsc;
|
||||
@@ -71,15 +72,13 @@ pub(crate) fn attach(window: &AppWindow) {
|
||||
};
|
||||
log::info!("automation: listening on {path:?}");
|
||||
let weak = window.as_weak();
|
||||
std::thread::Builder::new()
|
||||
.name("automation".into())
|
||||
.spawn(move || {
|
||||
for stream in listener.incoming().flatten() {
|
||||
let weak = weak.clone();
|
||||
std::thread::spawn(move || serve(stream, weak));
|
||||
}
|
||||
})
|
||||
.ok();
|
||||
executors::try_spawn(Executor::Io, "automation", move || {
|
||||
for stream in listener.incoming().flatten() {
|
||||
let weak = weak.clone();
|
||||
executors::spawn(Executor::Io, "auto-conn", move || serve(stream, weak));
|
||||
}
|
||||
})
|
||||
.ok();
|
||||
}
|
||||
|
||||
fn serve(stream: UnixStream, weak: slint::Weak<AppWindow>) {
|
||||
|
||||
Reference in New Issue
Block a user