用安培数分隔的复音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#。这是复调C#。这是微软的一个研究项目。遗憾的是,它没有精确定义1,但重点是:

然而,在复调C#中,一个主体可能与一组(同步和/或异步)方法相关联。我们把这样的定义称为和弦,一个特定的方法可能会出现在几个和弦的标题中。chord的主体只能在其标头中的所有方法都被调用后才能执行。

因此,&将这些方法"绑定"到一个chord中,在调用chord中的所有方法之前,不会调用该chord。

在同一篇文章中进一步介绍:

这两种方法出现在单个和弦的头中(用一个和符分隔),其主体由return语句组成。现在假设bBuffer的实例,并且生产者和消费者线程希望通过b进行通信。生产者对put()进行调用,由于该方法是异步的,因此不会阻塞。使用者调用get(),由于该方法是同步的,它将阻塞,直到或除非有匹配的put()调用一旦b接收到put()get(),则运行主体,并返回put()的自变量作为对get()的调用结果在接收到put()以重新唤醒其中一个之前,对get()的多个调用可能处于挂起状态,并且在随后的get() s消耗其自变量之前,可能对put()进行多个调用。

1:但是,这就是尖端的本质。我明白了。

这只是用于指定组成和弦的多个方法的语法。在调用头中的所有方法之前,主体不会执行。