Начало работы со структурой проекта - PullRequest
8 голосов
/ 30 марта 2011

Я просматривал код Topshelf и заметил, что он использует сборку под названием 'stact.dll'.Там, кажется, не так много информации об этом.Кажется, это библиотека для создания параллельных приложений с использованием актеров и «каналов».Я нахожу код Topshelf немного сложным для понимания, но мне интересно узнать больше об этом стиле программирования.Кто-нибудь имел опыт работы с этой библиотекой?Как ты научился пользоваться им?

1 Ответ

6 голосов
/ 30 марта 2011

В настоящее время станция действительно используется только для внутренних целей.Это то, что мы создали на основе нашего опыта написания параллельного программного обеспечения и в основном работы Криса Паттерсона (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. На данный момент хороших примеров нет, используя его, чтобы написать актеров. Я надеюсь, что это помогает.

...