zoukankan      html  css  js  c++  java
  • rust async

    use futures::{ self, executor};
    use std::thread;
    use std::time;
    async fn song() {
                    loop {
    
        println!("song!");
            thread::sleep(time::Duration::from_secs(5));
                    }
    }
    
    
    async fn dance() {
                    loop {
            thread::sleep(time::Duration::from_secs(5));
        println!("Dance!");
                    }
    }
    
    
    async fn async_main() {
        let f1 = song();
        let f2 = dance();
        futures::join!(f1, f2);
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }

    没有dance

    [root@bogon async4]# cargo build
       Compiling own v0.1.0 (/data2/rust/async4)
        Finished dev [unoptimized + debuginfo] target(s) in 0.58s
    [root@bogon async4]# cargo run
        Finished dev [unoptimized + debuginfo] target(s) in 0.03s
         Running `target/debug/own`
    song!
    song!
    song!
    song!
    song!
    song!
    song!
    song!
    song!
    ^C
    thread::sleep改成 
       sleep(time::Duration::from_secs(5)).await;
    //例子二
    use futures::{ self, executor};
    use std::thread;
    use std::time;
    use async_std::task::{sleep, spawn};
    async fn song() {
                    loop {
    
        println!("song!");
            sleep(time::Duration::from_secs(5)).await;
                    }
    }
    
    
    async fn dance() {
                    loop {
            sleep(time::Duration::from_secs(5)).await;
        println!("Dance!");
                    }
    }
    
    
    async fn async_main() {
        let f1 = song();
        let f2 = dance();
        futures::join!(f1, f2);
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
    use futures::{ self, executor};
    use std::thread;
    use std::time;
    use async_std::task::{sleep, spawn};
    
    async fn async_main() {
                    loop {
            sleep(time::Duration::from_secs(5)).await;
        println!("Dance!");
                    }
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
    
     
    warning: 2 warnings emitted
    
        Finished dev [unoptimized + debuginfo] target(s) in 0.06s
         Running `target/debug/own`
    Dance!
    Dance!
    ^C
    use futures::{ self, executor};
    use std::thread;
    use std::time;
    use async_std::task::{sleep, spawn};
    
    async fn async_main() {
                    loop {
            //sleep(time::Duration::from_secs(5)).await;  
            sleep(time::Duration::from_secs(5));  //sleep不会执行
        println!("Dance!");
                    }
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
    use futures::{ self, executor,join};
    use std::thread;
    use std::time;
    use async_std::task::{sleep};
    
    async fn async_main() {
                    loop {
            //sleep(time::Duration::from_secs(5)).await;
            let f1 = sleep(time::Duration::from_secs(5));
            join!(f1);
        println!("Dance!");
                    }
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }

    顺序执行 --串联

    use futures::{ self, executor,join};
    use std::thread;
    use std::time;
    use async_std::task::{sleep};
    async fn worker1(){
        println!("start worker1!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker1!");
    }
    async fn worker2(){
        println!("start worker2!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker2!");
    }
    async fn worker3(){
        println!("start worker3!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker3!");
    }
    async fn async_main() {
        worker1().await;
        worker2().await;
        worker3().await;
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
        Finished dev [unoptimized + debuginfo] target(s) in 0.06s
         Running `target/debug/own`
    start worker1!
    stop worker1!
    start worker2!
    stop worker2!
    start worker3!
    stop worker3!
    Hello, world!

    并联

    //例子二
    use futures::{ self, executor,join};
    use std::thread;
    use std::time;
    use async_std::task::{sleep};
    async fn worker1(){
        println!("start worker1!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker1!");
    }
    async fn worker2(){
        println!("start worker2!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker2!");
    }
    async fn worker3(){
        println!("start worker3!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker3!");
    }
    async fn async_main() {
            // sequence
        //worker1().await;
        //worker2().await;
        //worker3().await;
            //concurrence
            join!( worker1(), worker2(), worker3());
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
        Finished dev [unoptimized + debuginfo] target(s) in 0.06s
         Running `target/debug/own`
    start worker1!
    start worker2!
    start worker3!
    stop worker1!
    stop worker2!
    stop worker3!
    Hello, world!

    串联 + 并联

    use futures::{ self, executor,join};
    use std::thread;
    use std::time;
    use async_std::task::{sleep};
    async fn worker1(){
        println!("start worker1!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker1!");
    }
    async fn worker2(){
        println!("start worker2!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker2!");
    }
    async fn worker3(){
        println!("start worker3!");
            sleep(time::Duration::from_secs(5)).await;
        println!("stop worker3!");
    }
    async fn async_main() {
            // sequence
        //worker1().await;
        //worker2().await;
        //worker3().await;
            //concurrence
            //join!( worker1(), worker2(), worker3());
            let f1 = async {
        worker1().await;
        worker2().await;
            };
            join!( f1, worker3());
    
    }
    fn main() {
        executor::block_on(async_main());
        println!("Hello, world!");
    }
        Finished dev [unoptimized + debuginfo] target(s) in 0.06s
         Running `target/debug/own`
    start worker1!
    start worker3!
    stop worker1!
    start worker2!
    stop worker3!
    stop worker2!
    Hello, world!
  • 相关阅读:
    实用的网络流量监控脚本
    校园招聘面试总结
    简单的HttpClient使用
    大日志处理问题
    <Interview Problem>最小的“不重复数”
    <Interview Problem>二叉树根到叶节点求和值匹配
    安装后端阿里云sdk
    ModuleNotFoundError: No module named 'Crypto'
    pip install 报错 ERROR: Could not find a version that satisfies the requirement PIL (from versions: none) ERROR: No matching distribution found for PIL
    dva+antd初体验
  • 原文地址:https://www.cnblogs.com/dream397/p/14201957.html
Copyright © 2011-2022 走看看