https://github.com/stiffstream/so5_mboxes_demo
A demo projects for showing SObjectizer's mboxes
https://github.com/stiffstream/so5_mboxes_demo
Last synced: 8 months ago
JSON representation
A demo projects for showing SObjectizer's mboxes
- Host: GitHub
- URL: https://github.com/stiffstream/so5_mboxes_demo
- Owner: Stiffstream
- Created: 2020-04-10T10:12:59.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-10T10:31:33.000Z (about 6 years ago)
- Last Synced: 2024-12-28T11:28:14.921Z (over 1 year ago)
- Language: C++
- Size: 8.79 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Что это?
Это несколько демонстрационных примеров, показывающих работу mbox-ов из SObjectizer-5.5.
Внутри репозитория три примера:
* one_to_one_demo. Показывает взаимодействие двух агентов в режиме 1:1 через MPMC-mbox;
* one_to_many_demo. Показывает взаимодействие нескольких агентов в режиме 1:N через MPMC-mbox;
* anti_jitter_mbox_demo. Показывает простую реализацию собственного mbox-а.
# Как взять и попробовать?
**Примечание.** Пример anti_jitter_mbox_demo. использует `std::optional` поэтому требуется C++ компилятор с поддержкой C++17. Пример тестировался на gcc-7.2, clang-5.0 и msvs2017 (vc++15.5). Возможно использование и более старых компиляторов, но в этом случае нужно будет вручную поменять ключи компиляторов (например, использовать -std=c++1z вместо -std=c++17).
Есть два способа попробовать самостоятельно скомпилировать примеры: с помощью CMake и с помощью MxxRu.
## Компиляция с помощью CMake
Для компиляции примеров с помощью CMake требуется загрузить архив с именем вида so5_mboxes_demo-*-full.zip из секции [Releases](https://github.com/stiffstream/so5_mboxes_demo/releases/). После чего:
```sh
unzip so5_mboxes_demo-202004101330-full.zip
cd so5_mboxes_demo
mkdir cmake_build
cd cmake_build
cmake -DCMAKE_INSTALL_PREFIX=target -DCMAKE_BUILD_TYPE=Release ../dev
cmake --build . --config Release --target install
```
Возможно, потребуется дополнительно указать название нужного вам тулчейна через опцию -G. Например:
```sh
cmake -DCMAKE_INSTALL_PREFIX=target -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" ../dev
```
## Компиляция с помощью MxxRu
Для компиляции с помощью MxxRu потребуется Ruby и RubyGems (как правило, RubyGems устанавливается вместе с Ruby, но если это не так, то RubyGems нужно поставить явно). Для установки MxxRu нужно выполнить команду:
```sh
gem install Mxx_ru
```
После того как Ruby, RubyGems и MxxRu установлены можно брать примеры непосредственно из Hg-репозитория:
```sh
git clone https://github.com/stiffstream/so5_mboxes_demo
cd so5_mboxes_demo
mxxruexternals
cd dev
ruby build.rb
```
Либо же можно загрузить архив с именем вида so5_mboxes_demo-*-full.zip из секции [Releases](https://github.com/so5_mboxes_demo/releases/). После чего:
```sh
unzip so5_mboxes_demo-202004101330-full.zip
cd so5_mboxes_demo/dev
ruby build.rb
```
Скомпилированные примеры должны оказаться внутри подкаталога `target/release`.
Также перед сборкой может быть полезно выполнить:
```sh
cp local-build.rb.example local-build.rb
```
и нужным вам образом отредактировать содержимое `local-build.rb`.