2016-01-08 3 views
1

Я пытаюсь создать массив с потоками. Мой код выглядит следующим образом:Массив потоков в C++ Boost

boost::thread threads[10]; 

    for(int i = 0; i < 10; i++){ 
     client c(io_services[i], "www.boost.org", "/"); 

     threads[i] (boost::bind(workerFunc, i)); 

    } 

И я получаю ошибку компиляции:

error: no match for call to ‘(boost::thread) (boost::_bi::bind_t<void, void (*)(int), boost::_bi::list1<boost::_bi::value<int> > >)’ 
     threads[i] (boost::bind(workerFunc, i)); 

Я не могу понять, что мне нужно изменить в своем коде. Любая помощь будет оценена.

+0

Вы включая заголовок наддува? [проверьте это] (http://www.boost.org/doc/libs/1_60_0/more/getting_started/index.html) для получения дополнительной информации –

+0

@JamesKirsch да Я – andrey

+0

Конструктор потоков использует связывание внутри. попробуйте темы [i] (& some_function); – aayush93

ответ

4

Вы ищете:

boost::thread threads[10]; 

for(int i = 0; i < 10; i++){ 
    client c(io_services[i], "www.boost.org", "/"); 

    threads[i] = boost::thread(boost::bind(workerFunc, i)); 
} 
+1

спасибо, что помогает! – andrey