Я нашел класс пула потоков, и я попытался использовать множество комбинаций для вызова метода с функцией внутри.Положите функцию в шаблон
Вот пример моей попытки:
WorkerPool wp(4);
wp.run_task<Connection::On_NET1_LOGIN>(&On_NET1_LOGIN());
Здесь являются функциями WorkerPool в:
template < typename Task >
void run_task(Task task)
{
boost::unique_lock<boost::mutex> lock(mutex_);
// If no threads are available, then return.
if (0 == available_) return;
// Decrement count, indicating thread is no longer available.
--available_;
// Post a wrapped task into the queue.
io_service_.post(boost::bind(&WorkerPool::wrap_task, this,
boost::function< void() >(task)));
}
private:
/// @brief Wrap a task so that the available count can be increased once
/// the user provided task has completed.
void wrap_task(boost::function< void() > task)
{
// Run the user supplied task.
try
{
task();
}
// Suppress all exceptions.
catch (...) {}
// Task has finished, so increment count of available threads.
boost::unique_lock<boost::mutex> lock(mutex_);
++available_;
}
Что я делаю неправильно в вызове функции для этого ThreadPool? Спасибо.
Какое сообщение об ошибке? – MSalters