我是一名学生,目前正在写关于Raku的论文,为此我决定评估Raku (Perl6)在处理高并发性时是否是一种好的语言。
除了官方网站之外,我还没有找到任何关于Raku并发性的文章。此外,我不知道如何评估Raku的并发性(例如,我应该使用什么程序,应该将哪种语言与Raku进行比较,等等)。
Raku提供了哪些并发机制?这些文档记录在哪里?如何评估它们的功能和性能?
发布于 2020-12-29 06:39:24
Raku提供了许多不同的并发机制(而且还提供了许多并行编程方法,但我假设问题实际上只是关于并发的)。Raku中的大部分内容都可以在其他语言中找到;例如:
gather/take机制。在各种语言中,这被视为生成器函数;然而,在Raku中,没有单个堆栈框架限制,因此它们是协程功能强大的。关键的区别在于,Channel有存储空间-您可以将值放入其中,然后立即执行其他操作-而如果您向Supply发出值,则需要支付处理成本(提供了背压机制)。可以使用staged event-driven architecture.等Channel构建各种体系结构。
Raku中最独特的概念是react/supply/whenever结构,这在其他语言中是不存在的。编写多个异步流的处理器通常具有挑战性(订阅管理、并发控制);该构造为其提供了一种结构化编程方法。除此之外,这主要是一个语言集成在Raku中变得更强的问题,而不是把这些东西当作库来对待。
正如其他人所指出的那样,目前还没有太多正式文件。然而,这些幻灯片可能会很有趣(免责声明:它们是我的;我为Raku并发设计做出了贡献,并发明了react/supply/whenever).
发布于 2020-12-28 18:53:48
关于Raku的concurrency 的论文:如果你想要描述并发是如何工作的,我不知道有什么学术论文。大多数关于Raku的书,比如我自己的Raku Recipes (由Apress出版),都包含一个关于并发的章节,所以这也是你可以查看的内容。
如何评估Raku的并发性:*Raku使用communicating sequential processes,它使用Channels作为第一类对象。从这个意义上说,它类似于Go。另一方面,它能够通过hyper/race自动处理数据流,就像Julia通过宏所做的那样。
也许the perl6-users mailing list会是一个更好的地方来问这样的问题。
发布于 2020-12-29 05:10:53
raku内置的CSP是由Tony (Anthony) Hoare构思的一个成熟的并发模型。你可能还想找比尔(威廉)罗斯科的工作,延续了托尼的研究方向。请注意,这将是一般的CSP研究。我怀疑在Raku上是否有任何可供参考的具体做法。
https://stackoverflow.com/questions/65473206
复制相似问题