Переглянути джерело

修正running的被move问题

skyfffire 2 роки тому
батько
коміт
e29179be6c
2 змінених файлів з 5 додано та 3 видалено
  1. 1 1
      src/main.rs
  2. 4 2
      src/quant_libs.rs

+ 1 - 1
src/main.rs

@@ -25,7 +25,7 @@ async fn main() {
     // 退出检查程序
     let running = control_c::exit_handler();
     // quant初始化动作
-    let quant_arc = quant_libs::init(params, running).await;
+    let quant_arc = quant_libs::init(params, running.clone()).await;
     // 初始化中控服务
     server::run_server(6000, running.clone(), quant_arc.clone());
 

+ 4 - 2
src/quant_libs.rs

@@ -39,8 +39,9 @@ pub async fn init(params: Params, running: Arc<AtomicBool>) -> Arc<Mutex<Quant>>
     info!("quant初始化完成。");
 
     let order_handler_quant_arc = quant_arc.clone();
+    let r1 = running.clone();
     tokio::spawn(async move {
-        while running.load(Ordering::Relaxed) {
+        while r1.load(Ordering::Relaxed) {
             tokio::time::sleep(Duration::from_millis(1)).await;
 
             match order_receiver.recv().await {
@@ -74,8 +75,9 @@ pub async fn init(params: Params, running: Arc<AtomicBool>) -> Arc<Mutex<Quant>>
     });
 
     // let error_handler_quant_arc = quant_arc.clone();
+    let r2 = running.clone();
     tokio::spawn(async move {
-        while running.load(Ordering::Relaxed) {
+        while r2.load(Ordering::Relaxed) {
             tokio::time::sleep(Duration::from_millis(1)).await;
 
             match error_receiver.recv().await {