8

我一直在查看 Topshelf 代码,并注意到它使用了一个名为“stact.dll”的程序集。似乎没有很多关于这方面的信息。它似乎是一个使用参与者和“通道”构建并发应用程序的库。我发现 Topshelf 代码有点难以理解,但我有兴趣了解有关这种编程风格的更多信息。有人对这个图书馆有任何经验吗?你是如何开始学习如何使用它的?

4

1 回答 1

6

Stact 目前仅在内部真正使用。这是我们从编写并发软件的经验中建立起来的,主要是 Chris Patterson ( https://github.com/phatboyg/Stact ) 的工作。

我能想到的最简单的例子来自 Cashbox。 https://github.com/Cashbox/Cashbox/blob/v1.0/src/Cashbox/Engines/FileStorageEngine.cs

您有一个传递消息的通道。在该通道的一端,您设置消息订阅。第 72 行构建订阅,为它期望的每种消息类型设置一个处理程序操作。HandleOnFiber(_fiber) 强制所有消息在同一个线程上处理,并在接收到它们时排队。还有其他句柄调用,希望 API 是相当容易发现的。

现在这个例子隐藏了一个类中的所有通道和纤程,您可能有连接不同类的通道,在这种情况下,必须传递对相关通道的引用。

Stact 确实是一个 Actor 库。目前没有任何很好的例子可以用它来写演员。我希望这有帮助。

于 2011-03-30T11:55:12.390 回答