This repository contains several implementations of solutions for "Dining Philosophers" problem. These solutions are built by using Actor and CSP models on top of SObjectizer framework.
Since Jan 2020 a compiler with support of C++17 is required. A C++14 version can be found under the tag 20190129.
This repository contains only source codes of the examples. SObjectizer's source code is not included into the repository. There are two ways to get the examples and all necessary dependencies.
There is a Releases section. It contains archives with all source codes (it means that an archive contains sources of the examples and sources
of all necessary subprojects). The simpliest way is to download a corresponding archive, unpack it, go into
so5-dining-philosophers/dev
, then compile and run.
It this case you need to have Ruby + MxxRu + various utilities which every Linux/FreeBSD/macOS-developer usually have (like git, tar, unzip and stuff like that). Then:
- Install Ruby, RubyGems and Rake (usually RubyGems is installed with Ruby but sometimes you have to install it separatelly).
- Install MxxRu:
gem install Mxx_ru
- Do git clone:
git clone https://github.com/Stiffstream/so5-dining-philosophers
- Go into appropriate folder:
cd so5-dining-philosophers
- Run command
mxxruexternals
- Wait while add dependencies will be downloaded.
Then go to dev
subfolder, compile and run.
A well known chain of actions:
cd so5-dining-philosophers/dev
mkdir cmake_build
cd cmake_build
cmake -DCMAKE_INSTALL_PREFIX=target -DCMAKE_BUILD_TYPE=release ..
cmake --build . --config Release
cmake --build . --config Release --target test
Note that on Windows the last command can looks like:
cmake --build . --config Release --target run_tests
The following chain of actions is necessary for building with MxxRu:
cd so5-dining-philosophers/dev
ruby build.rb