如何仅生成一次线程,并能够更新 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,因为我尝试过的一些事情,比如产生新线程和保持它的状态不起作用。

相关推荐
你的人类朋友14 分钟前
Let‘s Encrypt 免费获取 SSL、TLS 证书的原理
后端
老葱头蒸鸡16 分钟前
(14)ASP.NET Core2.2 中的日志记录
后端·asp.net
李昊哲小课1 小时前
Spring Boot 基础教程
java·大数据·spring boot·后端
码事漫谈1 小时前
C++内存越界的幽灵:为什么代码运行正常,free时却崩溃了?
后端
Swift社区1 小时前
Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截?
java·spring boot·后端
90后的晨仔1 小时前
Mac 上配置多个 Gitee 账号的完整教程
前端·后端
码事漫谈1 小时前
AI智能体平台选型指南:从技术架构到商业落地的全景洞察
后端
青柠编程2 小时前
基于 Spring Boot 的医疗病历信息交互平台架构设计
java·spring boot·后端
chenyuhao20244 小时前
vector深度求索(上)实用篇
开发语言·数据结构·c++·后端·算法·类和对象
程序新视界4 小时前
MySQL中的数据去重,该用DISTINCT还是GROUP BY?
数据库·后端·mysql