Параллельная обработка очереди в несколько потоков с сохранением очередности
От: Sashaka Россия  
Дата: 12.02.14 15:45
Оценка:
Привет.

Есть задача для некоторого класса: обрабатывать данные параллельно используя пул потоков и выдавать результат.
Надо сохранить порядок входных и выходных данных.

То есть интерфейс вида:
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 ), допустим данные подаются на обработку из одного потока, а подаются на выход из другого

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