微软开源P语言,实现安全的异步事件驱动编程
来源:互联网 发布:石家庄盛光网络 编辑:程序博客网 时间:2024/06/12 11:48
微软最近开源了P语言,致力于在Linux、macOS和Windows上编写安全的异步事件驱动程序。
微软将P描述为一种领域特定语言,对异步系统的组件间通信进行建模,例如嵌入式、网络或分布式系统。P程序是通过有限状态机(finite state machine)来定义的,这些状态机会并发运行。每个状态机都有一个输入队列、状态、转换、机器本地存储,并且可以发送异步信息给其他状态机。在P中的基本操作要么是更新本地存储,发送消息,要么就是创建新的状态机。如下的代码片段展示了如何使用P来描述一个状态及其转换。除此之外,它还展现了如何发送消息或创建新的状态机:
...start state Init { entry { server = new Server(); raise SUCCESS; } on SUCCESS goto SendPing;state SendPing { entry { send server, PING, this; raise SUCCESS; } on SUCCESS goto WaitPong;}...
按照微软的说法,P程序能够使用模型检查功能来进行核实。这样的话,就允许开发人员确保所有的事件均能得到及时地处理。对于P程序来说,要想保证响应性,它的状态机就要处理每个状态上所有可以出队(dequeue)的事件。这种做法并不一定总是可行,因此对一些事件可能会进行延迟处理。在这种情况下,语言能够确保某个事件不会无限期延迟。P编译器能够核实程序的状态,还可以生成C代码,并交给C编译器执行,另外,它还可以输出Zing模型,用于系统测试。Zing是一个针对并发程序的开源模型检查器,它能够系统性地暴露一个模型所有可能出现的状态。
微软使用P语言实现和检验了Windows 8 USB设备驱动栈的核心功能。按照微软的说法,工程师使用P来序列化大量来自硬件、操作系统、功能驱动以及其他驱动组件的不同事件,提升了性能和可靠性。他们尤其指出,在新的USB hub驱动中,非法内存访问和竞态条件的数量不那么明显了,同时,枚举时间快了30%,也没有观察到worker条目饿死的现象。
原文链接:http://www.infoq.com/cn/news/2016/10/microsoft-p-language-opensourced
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- 微软开源P语言,实现安全的异步事件驱动编程
- 并发,同步,异步以及事件驱动编程的相关技术
- 并发,同步,异步以及事件驱动编程的相关技术
- 理解Node.js的事件驱动和异步编程
- Netty 基于事件驱动模型实现的异步IO
- 多线程 异步实现(通过事件驱动)
- 基于事件的异步编程
- 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
- P语言,微软在开源上的重要一步
- 并发事件: 实现 CLR 异步编程模型
- 实现 CLR 异步编程模型 并发事件
- 并发_同步_异步_事件驱动编程
- Future异步事件驱动
- 事件驱动异步模式
- 同步、异步、事件驱动
- 异步编程:基于事件的异步编程模式(EMP)
- I/0事件驱动实现异步curl,一
- zkclient的事件驱动实现
- Autofac 之 基于 Castle DynamicProxy2 的 Interceptor 功能
- 微服务架构之外的选择——基于服务架构
- [ASP.NET Core] Middleware
- Visual Studio“15”进一步改善性能和易用性
- ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)
- 微软开源P语言,实现安全的异步事件驱动编程
- 在Linux和Windows的Docker容器中运行ASP.NET Core
- 在.NET Core中使用MEF
- 编程语言的发展趋势及未来方向(4):动态语言
- 初级排序
- 编程语言的发展趋势及未来方向(5):元编程
- 编程语言的发展趋势及未来方向(6):并发
- 编程语言的发展趋势及未来方向(7):总结
- 综述:编程语言的发展趋势及未来方向