iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#并行库Parallel类怎么使用
  • 950
分享到

C#并行库Parallel类怎么使用

2023-07-02 09:07:12 950人浏览 薄情痞子
摘要

本篇内容主要讲解“C#并行库Parallel类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#并行库Parallel类怎么使用”吧!Parallel.Invoke这个函数的功能和Tas

本篇内容主要讲解“C#并行库Parallel类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#并行库Parallel类怎么使用”吧!

Parallel.Invoke

这个函数的功能和Task有些相似,就是并发执行一系列任务,然后等待所有完成。和Task比起来,省略了Task.WaitAll这一步,自然也缺少了Task的相关管理功能。它有两种形式:

Parallel.Invoke( params Action[] actions);Parallel.Invoke(Action[] actions,TaskManager manager,TaskCreationOptions options);

第二种方式可以自定义一个TaskManager对任务的执行线程进行管理(第一种方式用的是默认的TaskManager.Default)。

示例如下:

static void Main(string[] args){    var actions = new Action[]{        () => ActionTest("test 1"),        () => ActionTest("test 2"),        () => ActionTest("test 3"),        () => ActionTest("test 4")};    Console.WriteLine("Parallel.Invoke 1 Test");    Parallel.Invoke(actions);    Console.WriteLine();    Console.WriteLine("Parallel.Invoke 2 Test");    Parallel.Invoke(actions, new TaskManager(new TaskManagerPolicy(1, 1, 2)), TaskCreationOptions.None);}static void ActionTest(object value){    Console.WriteLine(">>> thread:{0}, value:{1}",    Thread.CurrentThread.ManagedThreadId, value);}

输出结果如下:

Parallel.Invoke 1 Test
>>> thread:3, value:test 1
>>> thread:3, value:test 2
>>> thread:4, value:test 3
>>> thread:5, value:test 4

Parallel.Invoke 2 Test
>>> thread:7, value:test 1
>>> thread:7, value:test 2
>>> thread:8, value:test 3
>>> thread:7, value:test 4

可见,由于第二次指定了最多只能使用两个线程来执行,故只有两个Task并发执行。

Parallel.ForEach和Parallel.For

Parallel.ForEach和Parallel.For用得要更加广泛一些,他可以根据一个数据源来生成一些任务(Parallel.Invoke需要事先生成这些任务),同时并发执行这些任务。基本示例如下:

static void Main(string[] args){    var data = new object[] { "test 1", "test 2", "test 3" };    Console.WriteLine("Parallel.ForEach Test");    Parallel.ForEach(data, item => ActionTest(item));    Console.WriteLine();    Console.WriteLine("Parallel.For Test");    Parallel.For(0, data.Length, index => ActionTest(data[index]));}

这两个函数都有多种重载形式,提供了许多控制功能,由于用得不是很多,这里就不一一介绍了。但有一点不是很好:如果需要用TaskManager的话,不得不用那最复杂的那一种形式。希望最终版本的时候会提供更合理的重载形式,毕竟TaskManager还是很常用的(虽然目前的TaskManager功能薄弱了点),而那些复杂的参数不是很常用的。因此,这里提供了两个常用的扩展方法的封装:

public static class ParallelExtend{    public static void ParallelForEach<T>(this IEnumerable<T> source, Action<T> hanlder)    {        Parallel.ForEach(source, hanlder);    }    public static void ParallelForEach<T>(this IEnumerable<T> source, Action<T> hanlder, TaskManagerPolicy policy)    {        using (var manager = new TaskManager(policy))        {            Parallel.ForEach(source,                () => 0,                (item, index, state) => hanlder(item),                local => { },                manager,                TaskCreationOptions.None);        }    }}

通过扩展方法的方式用起来还是比较方便的。

到此,相信大家对“C#并行库Parallel类怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C#并行库Parallel类怎么使用

本文链接: https://www.lsjlt.com/news/341191.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#并行库Parallel类怎么使用
    本篇内容主要讲解“C#并行库Parallel类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#并行库Parallel类怎么使用”吧!Parallel.Invoke这个函数的功能和Tas...
    99+
    2023-07-02
  • C#并行库Parallel类介绍
    Parallel.Invoke 这个函数的功能和Task有些相似,就是并发执行一系列任务,然后等待所有完成。和Task比起来,省略了Task.WaitAll这一步,自然也缺少了Tas...
    99+
    2024-04-02
  • Visual Studio 中怎么利用Parallel类实现并行计算
    Visual Studio 中怎么利用Parallel类实现并行计算,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Parallel类Parallel类就是TPL...
    99+
    2023-06-17
  • C#多线程之Parallel类怎么用
    本文小编为大家详细介绍“C#多线程之Parallel类怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#多线程之Parallel类怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Parallel类是对...
    99+
    2023-06-30
  • C#并行库Task类介绍
    Task和ThreadPool的功能类似,可以用来创建一些轻量级的并行任务。对于将一个任务放进线程池 ThreadPool.QueueUserWorkItem(A); 这段代码用Ta...
    99+
    2024-04-02
  • Linux并行作业执行工具GNU Parallel怎么用
    本篇内容介绍了“Linux并行作业执行工具GNU Parallel怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!GNU Paralle...
    99+
    2023-06-27
  • R语言中怎么使用parallel包实现并行计算
    要在R语言中使用parallel包实现并行计算,首先要安装并加载parallel包。可以使用以下代码来安装和加载parallel包:...
    99+
    2024-04-03
    R语言 parallel
  • oracle并行parallel多个表怎么实现
    在Oracle数据库中,并行处理(Parallel Processing)可以通过以下方式来实现多个表的并行处理: 针对单个表并行...
    99+
    2024-04-09
    oracle
  • C#中Parallel类For、ForEach和Invoke使用介绍
    一、简介: Parallel类提供了数据和任务的并行性;Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并...
    99+
    2024-04-02
  • C++并发编程:如何使用并行库(如OpenMP)?
    并发编程通过使用多个处理器提升程序性能,openmp 是一个并行编程库,提供指令支持并发任务创建和管理,包括创建并行区域、并行 for 循环、临界区和屏障。 C++ 并发编程:掌握并行...
    99+
    2024-05-06
    c++ 并发编程
  • c#类库程序怎么执行
    c# 类库程序执行方式:在需要使用类库的应用程序中添加引用。调用其方法或创建其类的实例。运行应用程序以执行代码,调用类库程序中的代码并使用其功能。 C# 类库程序的执行 C# 类库程序...
    99+
    2024-05-12
    c# c#类
  • oracle中parallel怎么使用
    在Oracle中,可以使用`PARALLEL`关键字来使用并行执行。并行执行可以使查询在多个CPU或服务器上同时执行,从而加快查询的...
    99+
    2023-08-08
    oracle parallel
  • 怎么使用GNU Parallel提高Linux命令行执行效率
    这篇文章主要为大家展示了“怎么使用GNU Parallel提高Linux命令行执行效率”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用GNU Parallel提高Linux命令行执行效率”...
    99+
    2023-06-16
  • C#并发编程之Task类怎么使用
    这篇文章主要介绍了C#并发编程之Task类怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#并发编程之Task类怎么使用文章都会有所收获,下面我们一起来看看吧。Task.RunTask是建立在线程池之上...
    99+
    2023-07-05
  • C#怎么使用Task实现执行并行任务
    这篇“C#怎么使用Task实现执行并行任务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么使用Task实现执行并行任务...
    99+
    2023-07-05
  • c#类库怎么引用
    如何在 c# 中引用类库?直接引用:右键单击项目,选择“添加引用”,浏览到 dll 文件并选择;使用 nuget:在 nuget 包管理器窗口中搜索所需类库,选择并安装;使用 using...
    99+
    2024-05-12
    c# c#类
  • C++怎么连接并使用MySQL数据库
    这篇文章主要为大家展示了“C++怎么连接并使用MySQL数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++怎么连接并使用MySQL数据库”这篇文章吧。1...
    99+
    2024-04-02
  • C#任务并行Parellel.For和Parallel.ForEach怎么使用
    这篇文章主要介绍了C#任务并行Parellel.For和Parallel.ForEach怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#任务并行Parellel.For和Parallel.ForEac...
    99+
    2023-07-02
  • C++类怎么使用
    本篇内容介绍了“C++类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面用实际的案例来说明C++类概念的问题,在世界中,经常有属于...
    99+
    2023-06-17
  • C#并行编程Task类用法介绍
    Task和ThreadPool的功能类似,可以用来创建一些轻量级的并行任务。对于将一个任务放进线程池 ThreadPool.QueueUserWorkItem(A); 这段代码用Ta...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作