• C# Parallel 循环多线程操作 2017-01-13 10:53:02
    using System; using System.Drawing; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; using OpenTK.Input; using System.Runtime.InteropServices; using System.Threading;...using System.Th
    using System;
    using System.Drawing;
    using OpenTK;
    using OpenTK.Graphics;
    using OpenTK.Graphics.OpenGL;
    using OpenTK.Input;
    using System.Runtime.InteropServices;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Linq;
    
    namespace Example
    {
        class MyApplication
        {
            public static void Main()
            {
                Parallel.For(0, 500000000000000, i =>
                  {
                      Console.WriteLine(i);
                  });
            }
        }
    }

    这样的for循环就是使用了多线程,和c++里的OpenMP类似。 

    运行图: 
    这里写图片描述 
    然后是运行时的cpu占用率: 
    这里写图片描述

    下图是正常的使用for循环输出时的cpu占用率: 
    这里写图片描述

    可见,对cpu的使用效率提升了很多。

    也可以使用ParallelLoopState.Break来进行控制 
    如下:

    using System;
    using System.Drawing;
    using OpenTK;
    using OpenTK.Graphics;
    using OpenTK.Graphics.OpenGL;
    using OpenTK.Input;
    using System.Runtime.InteropServices;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Linq;
    
    namespace Example
    {
        class MyApplication
        {
            public static void Main()
            {
                Parallel.For(0, 500000000000000,(i,loopstate) =>
                  {
                      Console.WriteLine(i);
                      if (i == 100)      //当i==100时跳出
                          loopstate.Break();
                  });
            }
        }
    }

    PLINQ

    使用起来很简单,就是在集合后加个AsParallel()。

      public static void Main()
            {
                var numbers = Enumerable.Range(0, 100);
                var result = numbers.AsParallel().AsOrdered().Where(i => i % 2 == 0);
                foreach (var i in result)
                    Console.WriteLine(i);
            }

    但这样得到的第二个数组并不是按顺序排的: 
    这里写图片描述

    想得到按顺序的可以在后面再加个AsOrdered():

    public static void Main()
            {
                var numbers = Enumerable.Range(0, 100);
                var result = numbers.AsParallel().AsOrdered().Where(i => i % 2 == 0);
                foreach (var i in result)
                    Console.WriteLine(i);
            }

    这里写图片描述


    展开全文
  • 一般子线程循环执行会有一个指定的周期, 在子线程等待(或者睡眠)时,无法唤醒退出,尤其在执行周期较长时,子线程无法即刻退出,导致 程序无法迅速关闭。 1. 定义AutoReset private AutoResetEvent exitEvent; ...
  • C#多线程及控制线程数量,对for循环输出效率。 虽然输出不规律,但是效率明显提高。 思路: 如果要删除1000条数据,只使用for循环,则一个接着一个输出。所以,把1000条数据分成seed段,每段10条数据。 int seed ...
  • ``` Thread Th = new Thread...以上为多线程循环运行某一段代码的部分代码 但是线程中有foreach循环.foreach循环会循环500次.但是工作到一半就不动了... 就是没有办法循环完 是什么原因呢 ,,改成for循环也没有用
  • 转自:... 添加控件 NumbericUpDown,重命名为createCount, textbox重命名为:f_groundcode, textbox重命名为:f_ticketno ...button重命名为:btnCreate ...richtextbox重命名为...
  • 背景:最近在做多线程方面的工作,工作中发现多线程中很多坑,这里就有一个List添加对象的误区,这里做个分享跟大家讲讲这个坑是怎么形成的怎么样避免。 示例: 代码及错误: 如果单单只从程序逻辑上看,应该...
  • C#实现http下的多线程下载 2020-07-05 23:31:18
    C#多线程下载C#多线程下载C#多线程下载C#多线程下载C#多线程下载C#多线程下载C#多线程下载
  • 参考: https://blog.csdn.net/qq_32655383/article/details/51660925... 线程类: package threadabc; public class ThreadPrint implements Runnable { private Object after; private Object now; priva...
  • c# 多线程批量插入数据库 2019-07-11 11:28:33
    c# 多线程批量插入数据库,该怎么解决 www.MyException.Cn发布于:2012-04-06 12:22:24浏览:170次 c# 多线程批量插入数据库每隔2小时就采集上百个设备上的信息,每个设备上的信息至少上百条,用多线程采集信息...
  • C#多线程的实现 2014-01-11 12:58:15
    首先,上个多线程的概念。通过单独的线程来执行某个任务,一个多线程程序可以执行多个任务,而且这些线程都是并行...在C#里面,.net framework为我们提供了多线程的实现。微软的msdn文档,也给出了实例。见 MSDN Th
  • 本文是一篇读书笔记,由《C#多线程编程实战》一书中的内容整理而来,主要梳理了.NET中多线程编程相关的知识脉络,从Thread、ThreadPool、Task、async/await、并发集合、Parallel、PLINQ到Rx及异步I/O等内容,均有所...
  • 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:一个线程可以在后台读取数据,而另一个线程可以在前台展现已读取的数据。 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它...
  • 因为要改个代码 向DataGrideView导入上万条数据, 这听起来挺简单的, 但是,表的数据源DataSource 是在Timer...但是获取List集合的方法里面有个增量更新部分foreach循环嵌套,用了20秒时间 所以,UI界面DataGridView...
  • C#多线程编程实例 线程与窗体交互代码: public partial class Form1 : Form { //声明线程数组 Thread[] workThreads = new Thread[10]; public Form1() { InitializeComponent();
  • C#多线程编程 2019-06-20 16:02:12
    一、基本概念 进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存...多线程多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,...
  • 该例子对为多线程使用progressBar的一个简单例子。 实现: (1)计算progressBar运行时间(既进度条开始到结束的时间) (2)利用多线程运行(用这个应该必须用多线程吧,否则没什么实际意义,因为你有进度条必然...
  • C#多线程编程:线程同步 2019-06-05 18:35:58
    正如前面所看到的一样,多个线程同时使用共享对象会造成很多问题。同步这些线程使得对共享对象的操作...导致这问题的原因是多线程的执行并没有正确同步。当一个线程执行递增和递减操作时,其他线程需要依次等待。这种...
  • C#多线程的作用是啥? 2016-03-18 00:18:10
    按照普通代码操作是循环遍历完一个表之后才能操作下一个表,而多线程的作用则是创建多个线程,每个线程同步循环遍历一个或多个表,在硬件设备支持的条件下,有多少个线程就相当于提高了多少倍的执行效率。...
  • using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;...
  • C#多线程 2016-03-30 19:11:29
    高手讲解C#多线程揭秘教程 www.111cn.net 编辑:edit02_lz 来源:转载 本教程是高手整理的C#多线程详解,内容将通过一些实例来说明.net中如何实现多线程,主要内容有:线程概念、如何实现多线程、如何确保线程...
1 2 3 4 5 ... 20
收藏数 33,292
精华内容 13,316