zoukankan      html  css  js  c++  java
  • 异步编程

    先实现一个简单的异步方法:(这种方法是:非阻塞的,并行执行的)
    asyncRsult方法模拟一些异步操作;
    执行到Task.run的时候会返回一个调用者;
    在主方法中创建一个等待接受任务结果的对象;

    用对象的OnCompleted方法内委托执行获取结果;
    当然,这不是最简单的方法
    最简单的方法是用关键字async,await
    稍后陈述
    finished;

        class Program
        {
            static void Main(string[] args)
            {
                var awaiter = asyncResult().GetAwaiter();
                //下面是委托的回调
                awaiter.OnCompleted(
                    () =>
                    {
                        Console.WriteLine((Int32)awaiter.GetResult());
                    }
                    );
                Console.WriteLine("sync");
            }
            static Task<int> asyncResult()
            {
                //模拟Io-Bound or Compute-Bound操作
                Thread.Sleep(2000);
                return Task.Run(() => { return 250; }) ;
            }
        }
    

    下面是使用Async await关键字实现的
    其实就是简化了OnCompleted

        class Program
        {
            static void Main(string[] args)
            {
                GetResultAsync();
                //下面是委托的回调
                //awaiter.OnCompleted(
                //    () =>
                //    {
                //        Console.WriteLine((Int32)awaiter.GetResult());
                //    }
                //    );
                Console.WriteLine("sync");
                Console.WriteLine("sync");
                Console.WriteLine("sync");
                Console.WriteLine("sync");
                Console.Read();
            }
            static async void GetResultAsync()
            {
                Console.WriteLine( await asyncResult());
            }
            static Task<int> asyncResult()
            {
                //模拟Io-Bound or Compute-Bound操作
                Thread.Sleep(2000);
                return Task.Run(() => { return 250; }) ;
            }
        }
    
  • 相关阅读:
    谈谈php依赖注入和控制反转
    关于php 高并发解决的一点思路
    php常用的优化手段
    php判断多维数组的技巧
    浅谈echo、print、var_dump()、print_r()的区别
    MYSQL表记录字段换行符回车符处理
    mysqldumpslow的使用简介
    mysql性能优化配置总结
    关闭discuzX3.2注册页面的注册邮箱验证
    php变量布尔值验证
  • 原文地址:https://www.cnblogs.com/liflower/p/13938173.html
Copyright © 2011-2022 走看看