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

相关推荐
Ting-yu2 分钟前
Spring AI Alibaba零基础速成(5) ---- Memory(记忆)
java·人工智能·后端·spring
月落归舟5 分钟前
一文掌握Spring AOP:从入门到底层原理
java·后端·spring
QuZhengRong7 分钟前
【Luck-Report】缓存
java·前端·后端·vue·excel
XiYang-DING19 分钟前
【Spring】SpringMVC
java·后端·spring
想学习java初学者21 分钟前
SpringBoot整合GS1编码解码
java·spring boot·后端
日月云棠21 分钟前
2 快速入门实战指南
java·后端
日月云棠22 分钟前
3 Dubbo 2.7 高级配置:检查控制、版本策略与协议选择
java·后端
日月云棠32 分钟前
1 分布式架构演进与Dubbo框架入门
java·后端
彩票管理中心秘书长32 分钟前
智能体状态指示:何时思考、何时调用工具、何时出错
前端·后端·程序员
彩票管理中心秘书长33 分钟前
React + TypeScript拆解一整套“AI 变现代码流程”
前端·后端·程序员