如何仅生成一次线程,并能够更新 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 分钟前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端
栈与堆1 小时前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust
superman超哥1 小时前
双端迭代器(DoubleEndedIterator):Rust双向遍历的优雅实现
开发语言·后端·rust·双端迭代器·rust双向遍历
1二山似1 小时前
crmeb多商户启动swoole时报‘加密文件丢失’
后端·swoole
马卡巴卡1 小时前
Java CompletableFuture 接口与原理详解
后端
神奇小汤圆1 小时前
Java线程协作工具:CountDownLatch 、CyclicBarrier、Phaser、Semaphore 、Exchanger
后端
gelald1 小时前
ReentrantLock 学习笔记
java·后端
计算机学姐2 小时前
基于SpringBoot的校园资源共享系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·spring·信息可视化
J_liaty2 小时前
RabbitMQ面试题终极指南
开发语言·后端·面试·rabbitmq
BD_Marathon2 小时前
SpringBoot程序快速启动
java·spring boot·后端