Привет.
Есть задача для некоторого класса: обрабатывать данные параллельно используя пул потоков и выдавать результат.
Надо сохранить порядок входных и выходных данных.
То есть интерфейс вида:
template < typename TInput, typename TOutput >
class Processor
{
public:
typedef boost::function( TOutput( TInput ) ) ProcessInput;
typedef boost::function( void( TOutput ) ) ProcessOutput;
explicit Processor( ProcessInput, ProcessOutput );
void process( TInput );
}
Порядок вызовов ProcessOutput должен совпадать с порядком вызовов Processor::process( TInput ), допустим данные подаются на обработку из одного потока, а подаются на выход из другого
Есть ли
типовое решение этой задачи?