Код: Выделить всё
threadPool->addJob(boost::bind(&Foo::bar, this, arg1, arg2));
...
typedef boost::function func;
std::queue funcQ;
void ThreadPool::addJob(func f){
funcQ.push(std::make_pair(f, j));
}
if (!funcQ.empty()){
func localFunc = (funcQ.front()).first;
...
funcQ.pop();
...
localFunc();
}
Код: Выделить всё
...
assert(funcQ.front().first);
func localFunc = (funcQ.front()).first;
...
Я сначала подумал, что, возможно, данные функции (из Foo класс) были уничтожены до того, как была вызвана функция, однако, как я понял, в форме, как можно было создать функцию. К сожалению, я недостаточно знаю о том, что заставляет Boost :: Function S будет недействительным, чтобы продвинуться дальше по проблеме. Неверно ли я привязываю функцию члена, или проблема лежит где -то между там и пытается ее назвать?>
Подробнее здесь: https://stackoverflow.com/questions/176 ... es-invalid
Мобильная версия