Я пытался вызвать функцию с параметрами, используя boost, но она не работает. код это
void Simulate::cr_number_threaded(lint nodes) {
for(lint i = 0; i < trials_per_thread; i++) {
// code
}
}
void Simulate::run_cr_number() {
vec_cr_number.clear();
boost::thread t[threads];
for(int i = 0; i < n_s.size(); i++) {
// n_s[i] is the current number of nodes
for(int t_idx = 0; t_idx < threads; t_idx++)
t[t_idx] = boost::thread(cr_number_threaded, n_s[i]);
// etc...
}
}
я получаю следующую ошибку:
Simulate.cpp: в функции-члене 'void
Имитировать :: run_cr_number () ':
Simulate.cpp: 27: ошибка: не соответствует
функция для вызова
'boost :: thread :: thread (, long int &)'
UPDATE:
Я последовал за предложениями. Используя первое решение, я получаю
Simulate.cpp: в функции-члене void
Имитировать :: run_cr_number () ':
Simulate.cpp: 28: ошибка: не соответствует
функция для вызова 'bind (, long int &)'
../../boost_1_44_0/boost/bind/bind.hpp:1472:
примечание: кандидаты:
повышение :: _ БИСТАБИЛЬНЫЙ :: bind_t ::>
boost :: bind (F, A1) [с F = void
(Simulate :: *) (lint), A1 = long int]
../../boost_1_44_0/boost/bind/bind.hpp:1728:
Примечание:
boost :: _ bi :: bind_t :: type, boost :: _ mfi :: dm,
имяТипа
повышение :: _ БИСТАБИЛЬНЫЙ :: list_av_1 ::>
boost :: bind (M T :: *, A1) [с A1 =
long int, M = void () (lint), T =
Имитировать]
используя второй, я получаю это вместо
Simulate.cpp: в функции-члене 'void
Имитировать :: run_cr_number () ':
Simulate.cpp: 28: ошибка: не соответствует
функция для вызова
«Повышение :: Thread :: своп (повышение :: _ би :: bind_t,
повышение :: _ би :: List2,
boost :: _ bi :: value>>) '
../../boost_1_44_0/boost/thread/detail/thread.hpp:310: примечание: кандидаты: void
повышение :: Thread :: свопа (Boost :: нитки &)