NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

关于.NET 中 Barrier 类的解释

  • 2011-06-20
  • 本文字数:875 字

    阅读完需:约 3 分钟

随着对多核系统重视的增加,(编程人员)对并行和并发编程的理解显得比从前更加重要。幸运的是,.NET 4 在向开发人员提供的同步原语方面做了很多改进。这些同步原语其中之一就是 Barrier 类(MSDN 中对 Barrier 类的注释:使多个任务能够采用并行方式依据某种算法在多个阶段中协调工作),Emad Omara 正是使用了 Barrier 类实现了并行合并排序。

Emad Omara 的并行合并排序算法假设了在排序操作的过程中(操作者)对计算机的所有 CPU 具有完全的访问权限。虽然这不是必要条件,但只是为了演示。输入数组首先被大致均等地划分为 N 个分区,这里 N 是逻辑 CPU 的数目。每个 CPU 上都会启动一个线程并针对该 CPU 所分配到的(输入数组的)分区进行单线程的排序。

这时所有的线程在继续下一阶段的操作之前都必须同步。半数的线程将会退出同时另一半的线程将会在相邻的分区之间进行合并排序。在之前版本的.NET 框架中,这些操作将会由低层次的 (.NET) 原语或者(编程人员)对 Thread.Join 方法小心谨慎的调用来完成。(而在.NET 4 中) Barrier 类给我们提供了(实现这些操作的)另一种选择。

新的 Barrier 类在某些方面就像 Thread.Join 方法一样,它会等待所有的线程完成(当前阶段)。但它又不像 Thread.Join 方法那样,所有被等待的线程(在完成当前阶段后)需要退出。(在 Barrier 类中)取而代之的,它们仅需要发出已经完成当前阶段的信号并时刻准备着开始下一个阶段。这样就省去了(在不同阶段间)结束和重新创建线程,这些改进对于线程池的操作来说尤其重要。

默认情况下 Barrier 类假设任何一个线程在进行下一阶段的工作前都必须给出前一个阶段的完成信号。很明显这个假设在这里 (Emad Omara 的并行合并排序算法) 不成立,因为每次在进入了合并排序阶段后(计算机)只需要半数(相对于最初建立的线程数)的线程(来完成后续的操作)。因此 Emad 在此调用了 Barrier.RemoveParticipant 方法来把预期将要发出完成信号的线程数量减一。

再次强调这个算法是为了教学目的而设计的,如果要将其运用于产品的构建上那么它还需要进行更多的改进。

查看英文原文 Explaining .NET’s Barrier Class

2011-06-20 02:101545

评论

发布
暂无评论
发现更多内容

用海外云手机高效率运营TikTok!

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 跨境云手机

鸿蒙HarmonyOS实战-ArkUI组件(Stack)

蜀道山

鸿蒙 HarmonyOS stack 鸿蒙开发 鸿蒙系统

一文读懂BTC生态新贵Giants Planet,将L2与现实世界整合

大瞿科技

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ModelWhale

人工智能 大数据 空间数据库 空间数据智能学术会议

拿到鹅厂的Offer啦!

王磊

Java 面试

MacOS Mojave10.14.6系统安装包 MacOSv10.14正式版安装

影影绰绰一往直前

一文读懂BTC生态新贵Giants Planet,将L2与现实世界整合

加密眼界

天翼云入选“2023年度数据要素价值创新标杆示范案例”!

天翼云开发者社区

云计算 大数据

NineData正式将SQL开发正式升级为数据库DevOps

NineData

DevOps 数据库设计 数据管理 SQL开发 NineData

鸿蒙HarmonyOS实战-ArkUI组件(Flex)

蜀道山

鸿蒙 HarmonyOS Flex 鸿蒙开发 鸿蒙系统

如何在面试中应对编程与算法面试?

霍格沃兹测试开发学社

软件测试学习笔记丨Jenkins api接口

测试人

软件测试 jenkins API 测试开发

支持国密加密卡的堡垒机是什么牌子?电话多少?

行云管家

数据安全 堡垒机 国密 国密加密卡

掌握 HTTP:网络通信的核心技术详解

Liam

程序员 前端 Web 后端 HTTP

从零开始学习大模型

百度开发者中心

人工智能 大模型 LLM

Hugging Face推出全新代码大模型:支持80+编程语言,集成VSCode

百度开发者中心

人工智能 深度学习 大模型

OpenAI前商业化负责人Zack Kass中国行系列活动圆满落幕!

科技热闻

智能商品计划系统如何提升鞋服零售品牌的竞争力

第七在线

MaxCompute 近实时增全量处理一体化新架构和使用场景介绍

阿里云大数据AI技术

大数据 阿里云

第47期 | GPTSecurity周报

云起无垠

使用 Apifox 设置 OAuth 2.0 并快速获取访问令牌

Apifox

程序员 后端 oauth2.0 OAuth 2.0 API 安全

AI数字人永生、数字分身、人均一个数字人会成为未来标配吗?

青否数字人

数字人

使用 TypeScript 从零搭建自己的 Web 框架:领域特定语言(DSL) 与 Prisma 模型

RoyLin

typescript

一本书精通推荐算法,轻松搞定入门、面试、进阶

博文视点Broadview

Python编程与算法面试-编程面试的重点

测试人

软件测试

IPQ4019 PK IPQ9574——Processor chip performance and application comparison

wifi6-yiyi

WiFi 7 WiFi 5

东周APP:投资新兴实业资产,助力实体经济高质量发展

Geek_2d6073

浪潮信息持续更新“源2.0”基础大模型能力

财见

秒开率破90%!交易后台渲染性能优化 | 得物技术

得物技术

性能优化 前端 企业号 4 月 PK 榜 后台管理

基于afx透明视频的视觉增强前端方案

百度Geek说

开发效率 企业号 4 月 PK 榜 前端动效 透明视频 视觉增强

NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]

汀丶人工智能

大模型 text2sql NL2SQL

关于.NET中Barrier类的解释_.NET_Jonathan Allen_InfoQ精选文章