P Language 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
P Language 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 MIT
开发语言 C/C++ C# 查看源码 »
操作系统 跨平台
软件类型 开源软件
开发厂商 微软
地区 不详
提 交 者 局长
适用人群 未知
收录时间 2016-10-17

软件简介

微软最近开源了P语言,致力于在Linux、macOSWindows上编写安全的异步事件驱动程序。

微软将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;
}
...
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
Mark
2017/12/13 17:08
回复
举报
更多评论
暂无内容
发表了博客
2019/03/30 14:06

p,&p,*p区别

随手记录: 1,p 2, &p 3, *p int *p,p即是一个变量,编译器会为p分配一个地址空间,而&即可取到编译器分配给p的地址。如果: int x = 9; p = &a; 即p的值即为编译器分配给x的地址,所以*p能取到x的值即取的是x的地址空间的值。 1 #include <stdio.h> 2 3 int main() 4 { 5 int *p; 6 int x = 9; 7 p = &x; 8 printf("p...

0
0
发表了博客
2014/11/22 18:57

*p++与*(p++) (*p)++ *++p *(++p)

<pre name="code" class="cpp">#include <stdio.h> int main(void) {   int *p;   int a[] = {11,2,5,6};      p = a;   *p++;   printf("p=%p *p=%d\n", p, *p);   p = a;   *(p++);   printf("p=%p *p=%d\n", p, *p);   p = a;   (*p)++;   printf("p=%p *p=%d\n", p, *p);      p = a;   *++p;   printf("p=%p *p=%d\n", p, *p); ...

0
0
发表了博客
2019/08/24 15:38

**p,*p和&p使用有感

*p两种使用情况: 1.定义指针变量,如char *p;这里p是一个变量,单单在这一点上与int a 无差别;但p这个变量特殊在其中只能存地址。 引申:对于char **p,p中存一个地址add1,add1对应存储区存放add2,而add2地址对应存储区才存放有真正的data;如下图1所示: 2.*p,用来取p中所存地址对应存储区的数据,如上图2所示。 ...

0
0
发表了博客
2019/02/14 23:15

*p++与(*p)++与*(p++)------自增运算符常见误区

自增运算符(++) 自增\自减运算符分为前缀形(++a)和后缀形(a++),这里重点分析自增 大部分人对前缀和后缀的理解一般是,前缀形式是先++再使用(先变后用),后缀形式是先使用再++(先用后变) (tips:自增运算符只能作用于变量,而不能作用于变量或表达式,例:(i+j)++就是非法的) 先来说一下一般情况 1 main() ...

0
0
发表于云计算专区
2015/05/11 11:08

This is the first part of a two p

This is the first part of a two p

0
0
发表了博客
2019/12/29 21:01

int *p 和int **p的区别

int *p:一级指针,表示p所指向的地址里面存放的是一个int类型的值 int **p:二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的 一级指针) 例如: int i = 10;//定义了一个整形变量 int *p = &i;//定义了一个指针指向这个变量 一级指针中各个参量含义的讲解 int a ...

0
0
发表了博客
2019/04/05 23:51

delete *p可以替代delete[] p吗?

在stackoverflow看到一个标题描述的问题,问题链接是:https://stackoverflow.com/questions/55524140/is-delete-p-an-alternative-to-delete-p/55524252#55524252。下面一起来看看它。 有一段来自微软官方文档的代码: 1 int (**p)() = new (int (*[7])()); 2 delete *p; 问题的发起者认为应该用delete[] p来替换这里的...

0
0
发表了博客
2013/11/20 21:34

int *p; scanf("%d",p);问题

void main() { int *p=NULL;//定义整型指针变量,是个野指针,可能指向任意位置 printf("Input a number:"); scanf("%d",p); return ; } 定义整型指针变量p后,没有指向任何有实际意义的地址,则它还是一个野指针,很危险,可能破坏其他有用的数据。 可改成下面的形式: void main() { int m=0; //定义整...

0
0
发表了博客
2013/03/24 17:59

P=NP?

“P=NP?” 通常被认为是计算机科学最重要的问题。有一个叫 Clay Math 的研究所,甚至悬赏 100 万美元给解决它的人。可是我今天要告诉你的是,这个问题其实是不存在的,它根本不需要解决。 我并不是第一个这样认为的人。在很早的时候就有个数学家毫不客气的指出,P=NP? 是个愚蠢的问题,并且为了嘲笑它,专门在愚人节写了...

32
49
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
19 收藏
分享
返回顶部
顶部