Когда я пытаюсь скомпилировать мой пул потоков с одной задачи я получил следующую ошибку:Thread ошибка бассейн компиляции
error: 'void ThreadPool::enqueue(F) [with F = CConnection::handle()::]', declared using local type 'CConnection::handle()::', is used but never defined [-fpermissive]
Вот пул потоков декларации:
class ThreadPool {
public:
ThreadPool(size_t);
template<class F>
void enqueue(F f);
~ThreadPool();
private:
// need to keep track of threads so we can join them
std::vector< std::unique_ptr<boost::thread> > workers;
// the io_service we are wrapping
boost::asio::io_service service;
boost::asio::io_service::work working;
friend class Worker;
};
Вот функция, то, что хотите использовать пул потоков для теста:
void CConnection::handle()
{
ThreadPool pool(4);
pool.enqueue([1]
{
std::cout << "hello " << 1 << std::endl;
boost::this_thread::sleep(
boost::posix_time::milliseconds(1000)
);
std::cout << "world " << 1 << std::endl;
});
char * databuffer;
databuffer = new char[16];
for(int i = 0;i<16;i++)
{
databuffer[i] = 0x00;
}
databuffer[0] = 16;
databuffer[4] = 1;
databuffer[8] = 1;
databuffer[12] = 1;
asynchronousSend(databuffer, 16);
}
А вот Епдиеее определение:
template<class F>
void ThreadPool::enqueue(F f)
{
service.post(f);
}
Может ли кто-нибудь найти то, что я делаю неправильно?
Нет, определение в ThreadPool.cpp –
@Kacper Хорошо, вот что я имел в виду. Он должен быть в заголовке – Guillaume
Он работает, спасибо: D Я получу ответ через 7 мин. –