2013-05-18 3 views
0

Я работаю с библиотекой Boost threads в C++, и я хочу создать разные потоки для обработки некоторых ведер данных. Во-первых, я загружаю данные в более мелкие ведра (по 100 элементов каждый) и присваиваю каждому ведру потоку. Доступные потоки равны четырем, поэтому я не создаю новые потоки, пока не появится бесплатный поток. Ниже приведен псевдокод:Как создать итеративные потоки повышения?

while(pool1->has_next()){ 

    int tmp = pool->get_next(); 
    pool2->pushback(tmp); 

    if(pool2->size()%100==0){ 

     while(working_threads>=4){ 
      wait(); 
     } 
     new thread (proc(pool2)); 
    } 
    pool2->clear(); 
} 

Как это можно сделать с помощью потоков Boost?

+0

Я не понимаю, очень ну ваш псевдокод: почему вы очищаете 'pool2' _incondition_ в конце цикла? что делает 'proc'? – didierc

ответ

1

Похоже, что вы хотите это пул потоков или нить группа, которая у меня есть пример на GitHub:

[email protected]: cdesjardins/JobBatcher.git

+0

Спасибо, но проблема в том, что входящие данные большие, чтобы вписаться в пул (память), поэтому я должен установить соответствующий размер пула, и если пул заполнен, подождите, пока не будет пустого места. это возможно ? –

+0

Вот что это делает –

Смежные вопросы