zoukankan      html  css  js  c++  java
  • 现场保障系统开发过程中增加并行处理(一)

    在现场保障系统开发中,考虑到从客户端获取webservice比较慢以及性能问题,打算采用多线程异步处理机制,希望能够增强用户体验,不至于在加载窗体的时候导致假死机现象.于是先实现了多线程的功能:

    在业务层增加了专门处理多线程的类(AsyncHelper)

    但是考虑到我们现在采用的框架是.net framework 4.0的版本,于是增加了并行处理机制.

    并行处理机制使得我们更多的把重点放在业务上,我们没有象多线程那么单独抽取出来一个类然后再调用,而是分散在具体的业务中.

    并行处理机制首先是需要考虑好怎么样划分这个并行处理的任务模块,如果划分的不好,那么相互间会有影响,性能反而下降.

    并且并行处理本身就是多线程的,而且封装的更好.

    一般如下进行操作:

    首先是划分你的功能:

               Action task1 = new Action(() =>
                {
                  GetData1(Thread.CurrentThread.ManagedThreadId.ToString());
                                      
                });
               Action task2 = new Action(() =>
               {
                   GetData2(Thread.CurrentThread.ManagedThreadId.ToString());
                   
               });
               Action task3 = new Action(() =>
               {
                   GetData3(Thread.CurrentThread.ManagedThreadId.ToString());
                  
               });
    然后是调用

              //这是第一种方式:

              var tasks = new Action[] { () => task1(), () => task2(), () => task3() };

               // System.Threading.Tasks.Parallel.Invoke - 并行调用多个任务
               System.Threading.Tasks.Parallel.Invoke(tasks);

    //这是第2种方式

              Task task0 = new Task(() =>
               {
                   Task.Factory.StartNew(() => task1());
                   Task.Factory.StartNew(() => task2());
                   Task.Factory.StartNew(() => task3());
               });
               task0.Start();

          

    如果Task<T> task0 = new Task<T>()

    那么 可以获取该task的返回值 task0.Result

  • 相关阅读:
    docker in docker
    docker社区的geodata/gdal镜像dockerfile分析
    howto:在构建基于debian的docker基础镜像时,更换国内包源
    使用Visual Studio 2017构建.Net Core的Docker镜像
    步骤:asp.net core中使用identifyserver4颁发令牌
    部署:阿里云ECS部署Docker CE
    问题:调用 ASP.Net Core WebAPI的HTTP POST方法时,从 [FromBody] 中读取的 MongoDB GeoJsonObjectModel成员总是null
    《.NET 微服务:适用于容器化 .NET 应用的体系结构》关键结论
    SQL数据库注入防范 ASP.NET Globle警告
    数据库中的恶意字符批处理
  • 原文地址:https://www.cnblogs.com/neverlost/p/1778880.html
Copyright © 2011-2022 走看看