История изменений
Исправление sotlef, (текущая версия) :
Количество потоков в очереди равно количеству ядер (или меньше, в зависимости от настроек в конфигурации)
Первоначально задача А (код которой схематично приведен в посте) стартует с поступлением запроса с сокета.
Дочерние задачи стартуют одновременно, каждая задача из которых может выполняться разное время - одна может выполниться за миллисекунды, другая - выполняться несколько секунд. И с этим ничего не поделаешь - спицифика задачи.
Чтобы было понятнее, числодробилкой является olap-сервер. В кубе определенные области могут задаваться разными правилами - соответственно, в зависимости от запрашиваемых клиентом срезов куба, вычисление разбивается на множество областей со своим сценарием вычислений. Количество этих областей не определенно, и они между собой могут зависимы.
Поэтому я не могу разбить вычисление на N воркеров, которые завершатся одновременно, так как вычисление некоторой области может потребовать вычисление, например, среза из другого куба.
Набрасывать задания я могу только в определенные моменты - это как раз в точках завершения предыдущего этапа и начала следующего
Исходная версия sotlef, :
Количество потоков в очереди равно количеству ядер (или меньше, в зависимости от настроек в конфигурации)
Первоначально задача А (код которой схематично приведен в посте) стартует с поступлением запроса с сокета.
Дочерние задачи стартуют одновременно, каждая задача из которых может выполняться разное время - одна может выполниться за миллисекунды, другая - выполняться несколько секунд. И с этим ничего не поделаешь - спицифика задачи.
Чтобы было понятнее, числодробилкой является olap-сервер. В кубе определенные области могут задаваться разными правилами - соответственно, в зависимости от запрашиваемых клиентом срезов куба, вычисление разбивается на множество областей со своим сценарием вычислений. Количество этих областей не определенно, и они между собой могут быть между собой зависимы.
Поэтому я не могу разбить вычисление на N воркеров, которые завершатся одновременно, так как вычисление некоторой области может потребовать вычисление, например, среза из другого куба.
Набрасывать задания я могу только в определенные моменты - это как раз в точках завершения предыдущего этапа и начала следующего