我正在阅读Polyphonic C#的介绍,第一页包含这个例子:
示例:简单缓冲区
这是Polyphonic C#类最简单有趣的例子:
Run Code Online (Sandbox Code Playgroud)public class Buffer { public String get() & public async put(String s) { return s; } }
我根本得不到它.方法和方法之间有
什么&关系?get()put()
这不是合法的C#.这是和弦C#.这是微软的研究项目.遗憾的是它没有精确定义1但重点是:
但是,在Polyphonic C#中,主体可能与一组(同步和/或异步)方法相关联.我们将这样的定义称为和弦,并且特定方法可能出现在几个和弦的标题中.和弦的主体只能在调用其标题中的所有方法后才能执行.
所以&将这些方法"绑定"在一起成为一个和弦,在和弦中的所有方法都被调用之前不会被调用.
在同一篇文章中稍微进一步:
这两种方法在单个和弦的标题中出现(用和号分隔),其主体由return语句组成.现在假设这
b是Buffer生成器和消费者线程希望通过它进行通信的实例b.生产者调用put(),因为该方法是异步的,所以不会阻塞.消费者进行调用get(),因为该方法是同步的,所以会阻塞直到或除非存在与put()的匹配调用.一旦b收到aput()和aget(),则正在运行,并且put()作为调用结果返回的参数被返回get().收到多个呼叫以重新唤醒其中一个和多个呼叫get()可能在a之前挂起put()put()可以在他们的论点被后续的get()s 消费之前做出.
1:但是,这就是前沿的本质.我明白了.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |