{"id":18720451,"url":"https://github.com/stiffstream/so5-dining-philosophers","last_synced_at":"2025-11-10T21:30:15.483Z","repository":{"id":109496939,"uuid":"236276353","full_name":"Stiffstream/so5-dining-philosophers","owner":"Stiffstream","description":"Several implementations of solutions for \"Dining Philosophers\" problem built by using Actor and CSP models on top of SObjectizer framework","archived":false,"fork":false,"pushed_at":"2022-01-12T12:58:33.000Z","size":55,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-28T11:28:17.834Z","etag":null,"topics":["communicating-sequential-processes","concurrency","cplusplus","cplusplus-14","sobjectizer"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Stiffstream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-26T06:33:48.000Z","updated_at":"2022-01-12T12:49:22.000Z","dependencies_parsed_at":"2023-04-25T04:48:55.655Z","dependency_job_id":null,"html_url":"https://github.com/Stiffstream/so5-dining-philosophers","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stiffstream%2Fso5-dining-philosophers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stiffstream%2Fso5-dining-philosophers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stiffstream%2Fso5-dining-philosophers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stiffstream%2Fso5-dining-philosophers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Stiffstream","download_url":"https://codeload.github.com/Stiffstream/so5-dining-philosophers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239583610,"owners_count":19663228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["communicating-sequential-processes","concurrency","cplusplus","cplusplus-14","sobjectizer"],"created_at":"2024-11-07T13:31:08.357Z","updated_at":"2025-11-10T21:30:15.364Z","avatar_url":"https://github.com/Stiffstream.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository contains several implementations of solutions for [\"Dining Philosophers\" problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem). These solutions are built by using Actor and CSP models on top of [SObjectizer](https://stiffstream.com/en/products/sobjectizer.html) framework.\r\n\r\n# How To Obtain And Try?\r\n\r\n## Prerequisites\r\n\r\nSince Jan 2020 a compiler with support of C++17 is required. A C++14 version can be found under the [tag 20190129](https://github.com/Stiffstream/so5-dining-philosophers/tree/20190129).\r\n\r\n## How To Obtain?\r\n\r\nThis repository contains only source codes of the examples. SObjectizer's source code is not included into the repository.\r\nThere are two ways to get the examples and all necessary dependencies.\r\n\r\n### Download The Full Archive\r\n\r\nThere is a [Releases section](https://github.com/Stiffstream/so5-dining-philosophers/releases). It contains archives with all source codes (it means that an archive contains sources of the examples and sources\r\nof all necessary subprojects). The simpliest way is to download a corresponding archive, unpack it, go into\r\n`so5-dining-philosophers/dev`, then compile and run.\r\n\r\n### Use MxxRu::externals\r\n\r\nIt 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:\r\n\r\n1. Install Ruby, RubyGems and Rake (usually RubyGems is installed with Ruby but sometimes you have to install it separatelly).\r\n2. Install MxxRu: `gem install Mxx_ru`\r\n3. Do git clone: `git clone https://github.com/Stiffstream/so5-dining-philosophers`\r\n4. Go into appropriate folder: `cd so5-dining-philosophers`\r\n5. Run command `mxxruexternals`\r\n6. Wait while add dependencies will be downloaded.\r\n\r\nThen go to `dev` subfolder, compile and run.\r\n\r\n## How To Try?\r\n\r\n### Building With CMake\r\n\r\nA well known chain of actions:\r\n\r\n~~~~~\r\ncd so5-dining-philosophers/dev\r\nmkdir cmake_build\r\ncd cmake_build\r\ncmake -DCMAKE_INSTALL_PREFIX=target -DCMAKE_BUILD_TYPE=release ..\r\ncmake --build . --config Release\r\ncmake --build . --config Release --target test\r\n~~~~~\r\n\r\nNote that on Windows the last command can looks like:\r\n\r\n~~~~~\r\ncmake --build . --config Release --target run_tests\r\n~~~~~\r\n\r\n\r\n### Building With MxxRu\r\n\r\nThe following chain of actions is necessary for building with MxxRu:\r\n\r\n~~~~~\r\ncd so5-dining-philosophers/dev\r\nruby build.rb\r\n~~~~~\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstiffstream%2Fso5-dining-philosophers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstiffstream%2Fso5-dining-philosophers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstiffstream%2Fso5-dining-philosophers/lists"}