Как проверить параллелизм? ⇐ C++
-
Гость
Как проверить параллелизм?
TLDR; В общем, если у вас есть исполнитель, который может запускать код параллельно или последовательно. Как убедиться, что параллельное выполнение действительно параллельно?
р:
У нас есть среда выполнения C++, в которую мы отправляем в нее кучу событий для параллельного или последовательного запуска.
[*]Планировщик имеет список исполнителей в разных потоках, выполняющих фактическую работу. [*]Когда запрашивается параллельное выполнение, мы отправляем каждое действие отдельному работнику. [*]Когда запрашивается последовательное выполнение, мы отправляем все действия одному и тому же работнику.
Рабочий процесс работает, но время от времени мы вносим в него изменения и хотим быть уверены, что вносимые нами изменения не нарушат параллелизм. Единственный тест, который у нас сейчас есть, — это отправить группу параллельных действий длительностью 1 секунду и убедиться, что время выполнения составляет < количество действий * 1 секунда.
По многим очевидным причинам это неустойчиво, хакерски и не работает во многих сценариях. Как лучше всего обеспечить функцию параллелизма?
Интерфейсы для справки:
Планировщик классов { bool submitSequential (список действий ); bool submitParallel (список действий ); }; класс Рабочий { bool enqueue (список действий ); }; действие класса { Бул делать(); };
TLDR; В общем, если у вас есть исполнитель, который может запускать код параллельно или последовательно. Как убедиться, что параллельное выполнение действительно параллельно?
р:
У нас есть среда выполнения C++, в которую мы отправляем в нее кучу событий для параллельного или последовательного запуска.
[*]Планировщик имеет список исполнителей в разных потоках, выполняющих фактическую работу. [*]Когда запрашивается параллельное выполнение, мы отправляем каждое действие отдельному работнику. [*]Когда запрашивается последовательное выполнение, мы отправляем все действия одному и тому же работнику.
Рабочий процесс работает, но время от времени мы вносим в него изменения и хотим быть уверены, что вносимые нами изменения не нарушат параллелизм. Единственный тест, который у нас сейчас есть, — это отправить группу параллельных действий длительностью 1 секунду и убедиться, что время выполнения составляет < количество действий * 1 секунда.
По многим очевидным причинам это неустойчиво, хакерски и не работает во многих сценариях. Как лучше всего обеспечить функцию параллелизма?
Интерфейсы для справки:
Планировщик классов { bool submitSequential (список действий ); bool submitParallel (список действий ); }; класс Рабочий { bool enqueue (список действий ); }; действие класса { Бул делать(); };
Мобильная версия