summaryrefslogtreecommitdiff
path: root/engine/src/work_queue.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-21 16:55:25 +0200
committerHampusM <hampus@hampusmat.com>2026-04-21 16:55:25 +0200
commit4c378d7173fae64ea77c6ead7258c30ff64f2789 (patch)
tree4f38e134c592efd52fe2522de2b9e394acb80282 /engine/src/work_queue.rs
parent781e5b413e86b6543c85a390fcc0abe8d4675325 (diff)
feat(engine): make windowing & work queue threads named
Diffstat (limited to 'engine/src/work_queue.rs')
-rw-r--r--engine/src/work_queue.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/engine/src/work_queue.rs b/engine/src/work_queue.rs
index 7226c7d..48cb2ff 100644
--- a/engine/src/work_queue.rs
+++ b/engine/src/work_queue.rs
@@ -1,6 +1,6 @@
use std::marker::PhantomData;
-use std::sync::mpsc::{channel as mpsc_channel, Sender as MpscSender};
-use std::thread::JoinHandle as ThreadHandle;
+use std::sync::mpsc::{Sender as MpscSender, channel as mpsc_channel};
+use std::thread::{Builder as ThreadBuilder, JoinHandle as ThreadJoinHandle};
pub struct Work<UserData: Send + Sync + 'static>
{
@@ -12,25 +12,28 @@ pub struct Work<UserData: Send + Sync + 'static>
pub struct WorkQueue<UserData: Send + Sync + 'static>
{
work_sender: MpscSender<Work<UserData>>,
- _thread: ThreadHandle<()>,
+ _thread: ThreadJoinHandle<()>,
_pd: PhantomData<UserData>,
}
impl<UserData: Send + Sync + 'static> WorkQueue<UserData>
{
- pub fn new() -> Self
+ pub fn new(name: &str) -> Self
{
let (work_sender, work_receiver) = mpsc_channel::<Work<UserData>>();
Self {
work_sender,
- _thread: std::thread::spawn(move || {
- let work_receiver = work_receiver;
+ _thread: ThreadBuilder::new()
+ .name(name.to_string())
+ .spawn(move || {
+ let work_receiver = work_receiver;
- while let Ok(work) = work_receiver.recv() {
- (work.func)(work.user_data);
- }
- }),
+ while let Ok(work) = work_receiver.recv() {
+ (work.func)(work.user_data);
+ }
+ })
+ .expect("Failed to create work queue thread"),
_pd: PhantomData,
}
}