• 【Tokio】自定义线程名称


    环境

    • Time 2022-01-11
    • Rust 1.57.0
    • Tokio 1.15.0

    概念

    参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html

    通过 thread_namethread_name_fn 可以对线程的名称进行设置。

    示例

    字符串

    use std::{io, thread, time::Duration};
    
    use tokio::runtime::Builder;
    
    fn main() -> io::Result<()> {
        let runtime = Builder::new_multi_thread()
            .thread_name("jiangbo-worker")
            .build()?;
    
        runtime.spawn(async {
            println!("hello tokio");
            println!("{}", thread::current().name().unwrap());
        });
    
        println!("{}", thread::current().name().unwrap());
        runtime.shutdown_timeout(Duration::from_secs(4));
        Ok(())
    }
    

    函数

    use std::{
        io,
        sync::atomic::{AtomicUsize, Ordering},
        thread,
        time::Duration,
    };
    
    use tokio::runtime::Builder;
    
    fn main() -> io::Result<()> {
        let runtime = Builder::new_multi_thread()
            .thread_name_fn(|| {
                static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0);
                let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst);
                format!("jiangbo-{}", id)
            })
            .build()?;
    
        (0..4).for_each(|_| {
            runtime.spawn(async {
                println!("hello tokio");
                println!("{}", thread::current().name().unwrap());
            });
        });
    
        println!("{}", thread::current().name().unwrap());
        runtime.shutdown_timeout(Duration::from_secs(4));
        Ok(())
    }
    

    总结

    对于 Tokio 中的线程,可以自定义线程名称。

    附录

  • 相关阅读:
    5. Longest Palindromic Substring
    56. Merge Intervals
    386. Lexicographical Numbers
    42. Trapping Rain Water
    *[topcoder]BracketExpressions
    [codility]CountDiv
    *[codility]MinAvgTwoSlice
    *[codility]MissingInteger
    [mock]7月25日
    网络广告术语
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/15947151.html
Copyright © 2020-2023  润新知