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

相关推荐
程序员NEO10 分钟前
我只说需求,AI 全程托管,代码自己长出来了!
人工智能·后端
白露与泡影18 分钟前
Spring Boot 优雅实现多租户架构!
spring boot·后端·架构
编写美好前程42 分钟前
springboot项目如何写出优雅的service?
java·spring boot·后端
Aurora_NeAr1 小时前
大数据之路:阿里巴巴大数据实践——实时技术与数据服务
大数据·后端
过客随尘1 小时前
Mysql RR事务隔离级别引发的生产Bug,你中招了吗?
后端·mysql
知其然亦知其所以然1 小时前
社招 MySQL 面试官问我:InnoDB 的 4 大特性?我靠这 4 个故事一战封神!
后端·mysql·面试
追逐时光者1 小时前
推荐 6 款基于 .NET 开源的串口调试工具,调试效率提升利器!
后端·.net
前端老鹰1 小时前
Node.js 日志处理利器:pino 模块全面解析
后端·node.js
没有bug.的程序员2 小时前
《 Spring Boot整合多数据源:分库业务的标准做法》
java·spring boot·后端·数据源·分库
中东大鹅2 小时前
如何理解SpringBoot starters的自动装配
java·spring boot·后端