11

在关于通信顺序进程的书中,大量时间都花在定义事件上,这些事件没有方向,可能涉及多个独立的进程。

仅在第4章中介绍了渠道,这些渠道是有针对性的,涉及2个过程。

然而,包括 occam、Go、LuaCSP 和 clojure.core.async 在内的所有 CSP 实现都只实现了通道。

尽管大多数实际问题都可以通过(广播)渠道解决,但我想知道为什么这本书花这么多时间在这些问题上,而没有人使用它们。

4

2 回答 2

9

好吧,首先这本书发生在实现之前。因此,您的问题最好表述为:

为什么 CSP 的实现没有将重点放在事件上,尽​​管这本书非常强调它们。

基本上,使事件成为一种语言的一等公民会赋予它一定的使用特异性,这对于通用编程语言来说可能过于狭窄。

此外,如果您从事事件驱动编程,您可以轻松地在通道(和其他结构)上实现事件。

于 2013-07-05T10:06:30.980 回答
2

在 Occam-pi 中,障碍是通道的重要附属物。使用屏障,每个已注册的进程都会在屏障上等待,直到他们都这样做了。此时他们都被释放了。这是 CSP 事件的非通道形式的示例。

Occam-pi 还具有使用通道的扩展集合。这是一种完全不同的通道使用模式,与 Ada 中的集合点非常相似。

于 2013-07-06T13:59:22.530 回答