用安培数分隔的复音C#方法
本文关键字:方法 分隔 | 更新日期: 2023-09-27 18:21:39
我正在阅读Polyphonic C#的介绍,第一页包含以下示例:
示例:简单缓冲区
以下是复调C#类中最简单有趣的例子:
public class Buffer { public String get() & public async put(String s) { return s; } }
我一点也不明白
方法get()
和put()
之间的&
表示什么?
这不是合法的C#。这是复调C#。这是微软的一个研究项目。遗憾的是,它没有精确定义1,但重点是:
然而,在复调C#中,一个主体可能与一组(同步和/或异步)方法相关联。我们把这样的定义称为和弦,一个特定的方法可能会出现在几个和弦的标题中。chord的主体只能在其标头中的所有方法都被调用后才能执行。
因此,&
将这些方法"绑定"到一个chord中,在调用chord中的所有方法之前,不会调用该chord。
在同一篇文章中进一步介绍:
这两种方法出现在单个和弦的头中(用一个和符分隔),其主体由return语句组成。现在假设
b
是Buffer
的实例,并且生产者和消费者线程希望通过b
进行通信。生产者对put()
进行调用,由于该方法是异步的,因此不会阻塞。使用者调用get()
,由于该方法是同步的,它将阻塞,直到或除非有匹配的put()调用一旦b
接收到put()
和get()
,则运行主体,并返回put()
的自变量作为对get()
的调用结果在接收到put()
以重新唤醒其中一个之前,对get()
的多个调用可能处于挂起状态,并且在随后的get()
s消耗其自变量之前,可能对put()
进行多个调用。
1:但是,这就是尖端的本质。我明白了。
这只是用于指定组成和弦的多个方法的语法。在调用头中的所有方法之前,主体不会执行。