LINUX.ORG.RU

История изменений

Исправление sotlef, (текущая версия) :

Количество потоков в очереди равно количеству ядер (или меньше, в зависимости от настроек в конфигурации)

Первоначально задача А (код которой схематично приведен в посте) стартует с поступлением запроса с сокета.

Дочерние задачи стартуют одновременно, каждая задача из которых может выполняться разное время - одна может выполниться за миллисекунды, другая - выполняться несколько секунд. И с этим ничего не поделаешь - спицифика задачи.

Чтобы было понятнее, числодробилкой является olap-сервер. В кубе определенные области могут задаваться разными правилами - соответственно, в зависимости от запрашиваемых клиентом срезов куба, вычисление разбивается на множество областей со своим сценарием вычислений. Количество этих областей не определенно, и они между собой могут зависимы.

Поэтому я не могу разбить вычисление на N воркеров, которые завершатся одновременно, так как вычисление некоторой области может потребовать вычисление, например, среза из другого куба.

Набрасывать задания я могу только в определенные моменты - это как раз в точках завершения предыдущего этапа и начала следующего

Исходная версия sotlef, :

Количество потоков в очереди равно количеству ядер (или меньше, в зависимости от настроек в конфигурации)

Первоначально задача А (код которой схематично приведен в посте) стартует с поступлением запроса с сокета.

Дочерние задачи стартуют одновременно, каждая задача из которых может выполняться разное время - одна может выполниться за миллисекунды, другая - выполняться несколько секунд. И с этим ничего не поделаешь - спицифика задачи.

Чтобы было понятнее, числодробилкой является olap-сервер. В кубе определенные области могут задаваться разными правилами - соответственно, в зависимости от запрашиваемых клиентом срезов куба, вычисление разбивается на множество областей со своим сценарием вычислений. Количество этих областей не определенно, и они между собой могут быть между собой зависимы.

Поэтому я не могу разбить вычисление на N воркеров, которые завершатся одновременно, так как вычисление некоторой области может потребовать вычисление, например, среза из другого куба.

Набрасывать задания я могу только в определенные моменты - это как раз в точках завершения предыдущего этапа и начала следующего