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

相关推荐
郑州光合科技余经理40 分钟前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒1 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
颜进强2 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程
isfox2 小时前
MapReduce Shuffle 深度解析:数据从 Map 到 Reduce 的完整旅程
后端
颜进强2 小时前
04 · NestJS 依赖注入:你在 `@Module` 写的 providers,和构造参数里那个类型,是怎么"对上"的?
前端·后端·ai编程
谁在黄金彼岸2 小时前
Ollama-使用速查
后端
ServBay2 小时前
Jev是什么?哑巴模型居然全网爆火
后端·aigc·ai编程
烈风逍遥3 小时前
第六篇:RAG 知识库构建与检索全链路
前端·人工智能·后端
花椒技术3 小时前
Agent 沙箱怎么接入生产?花椒的选型、持久化与执行协议实践
人工智能·后端·agent
独泪了无痕3 小时前
Hutool之ArrayUtil:解锁数组操作的新境界
后端