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

  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/neverlost/p/1778880.html
Copyright © 2011-2022 走看看