Skip to content

Демонстрация создания пользовательского thread_pool-диспетчера для SObjectizer-а, который использует собственную политику распределения заявок между рабочими нитями в пуле.

Notifications You must be signed in to change notification settings

Stiffstream/so5_tricky_thread_pool_disp_ru

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Что это?

Это демонстрация создания собственного thread_pool-диспетчера для SObjectizer-а, который использует собственную политику распределения заявок между рабочими нитями в пуле. Данный код служит иллюстрацией для статьи на Хабрхабр: "Пишем собственный хитрый thread_pool-диспетчер для SObjectizer-а".

Внутри репозитория два имитационных примера:

  • adv_thread_pool_case. Использует штатный adv_thread_pool-диспетчер из состава SObjectizer-а;
  • tricky_disp_case. Использует собственный хитрый thread_pool-диспетчер.

Как взять и попробовать?

Для экспериментов потребуется С++ компилятор с поддержкой C++17 (проверялось на gcc-7.3 и vc++ 15.6).

Для компиляции потребуется CMake или Ruby+MxxRu.

Компиляция с помощью CMake

Для компиляции с помощью CMake нужно загрузить архив с именем вида so5_tricky_thread_pool_disp_ru-*-full.zip из секции Releases. После чего:

unzip so5_tricky_thread_pool_disp_ru-202204220800-full.zip
cd so5_tricky_thread_pool_disp_ru/dev
mkdir cmake_build
cd cmake_build
cmake ..
cmake --build . --config Release

Скомпилированные примеры должны оказаться внутри подкаталога bin.

Примечание. Поддержка CMake была добавлена 2022.04, в более старых версиях примера сборка с помощью CMake не предусмотрена.

Компиляция с помощью MxxRu

Для компиляции с помощью MxxRu потребуется Ruby и RubyGems (как правило, RubyGems устанавливается вместе с Ruby, но если это не так, то RubyGems нужно поставить явно). Для установки MxxRu нужно выполнить команду:

gem install Mxx_ru

После того как Ruby, RubyGems и MxxRu установлены можно брать примеры непосредственно из Git-репозитория:

git clone https://github.com/Stiffstream/so5_tricky_thread_pool_disp_ru
cd so5_tricky_thread_pool_disp_ru
mxxruexternals
cd dev
ruby build.rb

Либо же можно загрузить архив с именем вида so5_tricky_thread_pool_disp_ru-*-full.zip из секции Releases. После чего:

unzip so5_tricky_thread_pool_disp_ru-201909051500-full.zip
cd so5_tricky_thread_pool_disp_ru/dev
ruby build.rb

Скомпилированные примеры должны оказаться внутри подкаталога target/release.

Также перед сборкой может быть полезно выполнить:

cp local-build.rb.example local-build.rb

и нужным вам образом отредактировать содержимое local-build.rb.

About

Демонстрация создания пользовательского thread_pool-диспетчера для SObjectizer-а, который использует собственную политику распределения заявок между рабочими нитями в пуле.

Resources

Stars

Watchers

Forks

Packages

No packages published