速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用 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:232054
用户头像

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

关注

评论

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

三十分钟入门基础Go(Java小子版)

京东科技开发者

京东商品详情API:解锁数据分析与决策支持的新商业价值

代码忍者

支持S3协议的S3cmd工具简单使用

天翼云开发者社区

云计算 S3 cmd

【YashanDB数据库】YAS-02024 lock wait timeout, wait time 0 milliseconds

YashanDB

yashandb 崖山数据库

在 Django 上实现定时任务的指南

我再BUG界嘎嘎乱杀

Python django 编程 爬虫 后端

【YashanDB数据库】YAS-02032 column type is incompatible with referenced column type

YashanDB

yashandb 崖山数据库 崖山DB

科大讯飞t20和t20pro 有什么区别

妙龙

科大讯飞 学习机

微信、支付宝、字节跨平台小程序集成到企业APP的兼容性策略

Geek_2305a8

数字货币合约跟单/秒合约/永续合约/交易所系统开发规则方案

V\TG【ch3nguang】

数字货币合约跟单 交易所系统开发

Web3 游戏周报(8.04 - 8.10)

Footprint Analytics

链游

观测云对接 OpenTelemetry 最佳实践

观测云

OpenTelemetry

中小企业异地组网方案优化——SD-WAN的应用

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 异地组网 SDWAN

事业-最佳实践-个人-心态调整

南山

云高性能计算平台 CHPC 让企业的传统 HPC 玩出新花样

Baidu AICLOUD

HPC 高性能计算

解析静态IP的应用场景与优势

IPIDEA全球HTTP

静态IP

流程图框架 - LogicFlow 2.0 发布啦 🎉🎉🎉

R0ger_OuO

开源软件 BPMN 可视化数据 流程图绘制 LogicFlow

晨曦抵校,夜幕归家:边缘AI守护,全程体验无忧

E科讯

EZ先享官海外溯源之旅让马粉再一次为马自达着迷

Geek_2d6073

京粉智能推广助手-LLM based Agent在联盟广告中的应用与落地

京东科技开发者

5 大场景上手通义灵码企业知识库 RAG

阿里云云效

阿里云 云原生 通义灵码

解析Hybrid 应用开发上架的原理

Geek_2305a8

SaaS应用加速问题怎么解决?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 SaaS应用加速 SaaS加速

事业-最佳实践-个人-高强度调节

南山

高强度调节 调整

科大讯飞T20和C10区别对比评测 哪个好

妙龙

科大讯飞 学习机

5 大场景上手通义灵码企业知识库 RAG

阿里巴巴云原生

阿里云 云原生 通义灵码

爱在七夕,巧手编织浪漫云端 —— 用1Panel为她的世界添一抹不凡

coxi_vv

七夕 建站 halo 1Panel 恋爱代码

【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode

YashanDB

yashandb 崖山数据库

99元做自己网站的管理员

coxi_vv

开源 建站 halo 1Panel 飞致云

一文带您了解如何降低对象存储成本

天翼云开发者社区

对象存储 天翼云

事业-最佳实践-个人-人际关系维护

南山

人际关系 维护关系

Vue Vine:带给你全新的 Vue 书写体验!

OpenTiny社区

开源 Vue 前端 TinyVue

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