写点什么

使用 TPL DataFlow 在 C#中轻松创建 Actor

  • 2013-11-25
  • 本文字数:553 字

    阅读完需:约 2 分钟

对于某些设计问题,Actor 可以让一切变得不同。 Actor 是一种可以响应和发送消息的独立实体。某种程度上,它就像是在另一个进程中运行属于它自己的小程序。但对于没有原生支持 Actor 的语言来说,构建 Actor 可能会非常困难。

出现的最主要的问题是线程管理。我们通常并不想拦截消息发送者的线程,因为那会给人一种方法调用的语义。且为每个 Actor 分配一个单独的线程并不会使程序比以前扩展多少,而在上下文切换时,线程就成了一个真正的问题。

Johan Olsson 在 TPL DataFlow 的基础上构建了自己的 Actor 库,为 C#解决了这一困境。TPL DataFlow 旨在通过异步方法将操作连接在一起。在 Block 之间传递的消息可能会被缓存、分组、分离、转换,或根据应用程序的语义和性能需要进行其他操作。

该框架的核心是一个封装了 ActionBlock 的抽象类 Actor。ActionBlock 在内部处理所有的线程问题,开发者不需要关心线程或任务。之所以是线程安全的,是因为 ActionBlock 默认会被序列化。如果同时发送两条消息,ActionBlock 会缓存第二条消息,直到第一条消息处理完毕。这个行为可以通过 ExecutionDataflowBlockOptions 进行修改。

你可以在 Johan Olssion 的“使用TPL DataFlow 在C#中实现Actor 模型”的文章中了解他的工作,并查看示例代码。

查看英文原文: Actors Made Easy with C# and TPL DataFlow

2013-11-25 07:232044
用户头像

发布了 59 篇内容, 共 23.5 次阅读, 收获喜欢 3 次。

关注

评论

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

WMS 库存系统设计

红袖添香

系统设计 供应链物流 WMS系统 库存系统

用Optaplanner实现云资源优化:建模详解

PeterOne

算法 后端 运筹优化 6 月 优质更文活动

华为手环、耳机等礼品!等你拿~快来参与CodeArtsBuild实践体验!

华为云PaaS服务小智

云计算 华为 华为云

Acrobat Pro DC 2023 for Mac(PDF编辑器) 中文最新

背包客

macos Mac软件 pdf编辑工具 Acrobat DC 2023 Acrobat DC

建设数字工厂:生产物料齐套检查的实现方法

华为云开发者联盟

华为云 华为云开发者联盟 企业号 6 月 PK 榜

联盟送福利:云上掘金,开启你收入的第二增长曲线

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 6 月 PK 榜

生产环境可用的 Seata-go 1.2.0 来啦!!!

SOFAStack

Java seata 版本发布 Seata框架 Seata-go

海纳 “千川”:得物多场景统一推荐平台

得物技术

Seata Saga 模式快速入门和最佳实践

SOFAStack

分布式 云原生 开发 seata Seata框架

TS类型声明

不叫猫先生

typescript 6 月 优质更文活动

vue2.x与vue3.x中自定义指令详解

不叫猫先生

Vue 6 月 优质更文活动

喜报|瑞云科技荣获“年度汽车数字化营销供应商”奖

3DCAT实时渲染

云仿真 汽车三维可视化 汽车虚拟仿真

风口上的AIGC,技术岗动不动年薪百万,甚至重金难求?

引迈信息

人工智能 低代码 AIGC ChatGPT

MegEngine 使用小技巧:如何做 MegCC 的模型性能评测

MegEngineBot

深度学习 开源 性能测试 编译器 MegEngine

智达方通EPM 发布5.0版本,持续赋能企业数智化管理

智达方通

EPM 智达方通 全面预算管理 智达方通EPM 企业绩效管理系统

精打细算:OptaPlanner如何帮助您找到最佳优惠券组合

PeterOne

算法 运筹优化 6 月 优质更文活动

2种GaussDB(DWS)查看作业运行信息方式

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

GitHub 2800颗星,支持GPT/Transformer,字节跳动这个开源项目是怎么来的?

字节跳动技术范儿

机器学习 nlp

ByteHouse+Apache Airflow:高效简化数据管理流程

字节跳动数据平台

airflow 数据管理 bytehouse

软件测试|抓包工具Charles--出现unknown怎么解决?

霍格沃兹测试开发学社

Spring Security6 全新写法,大变样!

江南一点雨

Java springboot springsecurity

Web 富文本编辑器之 Android 输入兼容

爱吃小舅的鱼

Web 富文本编辑器 Android 输入兼容

手势识别技术的挑战和未来发展

来自四九城儿

架构模块2作业

sandywrh

为开发者“铸剑”,一图揭秘华为云CodeArts IDE四大特性

华为云PaaS服务小智

云计算 开发者 华为云

手势识别技术及其应用

来自四九城儿

当 GraphQL 遇上图数据库,便有了更方便查询数据的方式

NebulaGraph

图数据库 graphql

加速44%!RT-DETR量化无损压缩优秀实战

飞桨PaddlePaddle

人工智能 百度 paddle

dart-sass与node-sass的区别以及使用dart-sass可能会出现的问题

不叫猫先生

CSS SASS 6 月 优质更文活动

前端基于DOM或者Canvas实现页面水印

不叫猫先生

Vue canvas 6 月 优质更文活动

使用TPL DataFlow在C#中轻松创建Actor_.NET_Jonathan Allen_InfoQ精选文章