如何仅生成一次线程,并能够更新 Rust 中的某些值

0 我有一个带有Axum 的网络服务器,当我接到一个呼叫时,比如说我的端点start,我想启动一个可以通过调用第二个端点来停止的进程stop

如果我第二次调用端点start,我希望能够不启动线程,因为它已经启动了(也许,但现在还不行,我想更新其中一个值,但我们假设我不做任何事情,因为这个过程已经启动了)。

我的主要功能如下:

css 复制代码
#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().with_writer(io::stderr).init();

    let process_starter = Arc::new(ProcessStarter::new());

    let app_state = AppState {
        process_starter,
    };

    let app = Router::new()
        .route("/start", post(start))
        .route("/stop", post(stop))
        .with_state(app_state.clone());

    info!("Starting web server");
    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
        .await
        .unwrap();
    axum::serve(listener, app).await.unwrap();
}

但我不知道如何实现ProcessStarter,因为我尝试过的一些事情,比如产生新线程和保持它的状态不起作用。

相关推荐
Victor35610 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
Victor35610 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术12 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
Gogo81612 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang12 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
毕设源码_廖学姐13 小时前
计算机毕业设计springboot招聘系统网站 基于SpringBoot的在线人才对接平台 SpringBoot驱动的智能求职与招聘服务网
spring boot·后端·课程设计
野犬寒鸦15 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
逍遥德15 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
MX_935916 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
程序员泠零澪回家种桔子17 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构