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!
  • 相关阅读:
    关于http请求头的一些事
    关于http抓取字段的一些事
    多线程的一些事
    正则的一些事
    出现问题集及解决方案
    常见的正则
    Http常见状态码
    list&tuple简记
    函数式编程--高阶函数--sorted
    函数式编程--高阶函数--filter
  • 原文地址:https://www.cnblogs.com/dream397/p/14201957.html
Copyright © 2011-2022 走看看