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:
@@ -23,6 +23,7 @@
|
||||
//! on every one. It therefore runs debounced, when detection has been idle and
|
||||
//! the face count has moved materially (catalog.md §10.2).
|
||||
|
||||
use crate::executors::{self, Executor};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::mpsc::{Receiver, Sender};
|
||||
|
||||
@@ -816,7 +817,7 @@ pub fn spawn_store_face_sweep(
|
||||
) -> Receiver<FaceSweepMessage> {
|
||||
let (tx, rx) = std::sync::mpsc::channel();
|
||||
|
||||
std::thread::spawn(move || {
|
||||
executors::spawn(Executor::Decode, "faces", move || {
|
||||
let finish_empty = |tx: &Sender<FaceSweepMessage>| {
|
||||
let _ = tx.send(FaceSweepMessage::Finished {
|
||||
images: 0,
|
||||
@@ -1348,7 +1349,7 @@ pub fn spawn_grouping_preview(
|
||||
) -> Receiver<PreviewMessage> {
|
||||
let (tx, rx) = std::sync::mpsc::channel();
|
||||
|
||||
std::thread::spawn(move || {
|
||||
executors::spawn(Executor::Decode, "grouping", move || {
|
||||
let msg = match Catalog::open(&catalog_path) {
|
||||
Ok(catalog) => match preview_grouping(&catalog, &model_id, &grouping) {
|
||||
Ok(p) => PreviewMessage::Ready(p),
|
||||
@@ -1397,7 +1398,7 @@ pub fn spawn_recluster(
|
||||
) -> Receiver<ReclusterMessage> {
|
||||
let (tx, rx) = std::sync::mpsc::channel();
|
||||
|
||||
std::thread::spawn(move || {
|
||||
executors::spawn(Executor::Decode, "recluster", move || {
|
||||
let catalog = match Catalog::open(&catalog_path) {
|
||||
Ok(c) => c,
|
||||
Err(e) => {
|
||||
|
||||
Reference in New Issue
Block a user