Я пытаюсь использовать asio :: io_context в нескольких потоках.
#include <iostream>
#include <vector>
#include <asio.hpp>
#include <thread>
#include <future>
#include <functional>
int main()
{
asio::io_context ctx;
std::vector<std::future<asio::io_context::count_type>> tasks;
for(int i = 0; i < 3; ++i)
{
tasks.push_back(std::async(std::launch::async, std::bind(&asio::io_context::run, &ctx));
}
for(auto &task: tasks){tasks.get();}
return 0;
}
Однако я получаю ошибку компиляции
asio_blah.cpp: In function ‘int main()’:
asio_blah.cpp:101:94: error: no matching function for call to ‘bind(<unresolved overloaded function type>, asio::io_context*)’
tasks.push_back(std::async(std::launch::async, std::bind(&asio::io_context::run, &ctx));
Не уверен, что компилятор невозможность определить указатель на функцию-член (я полагаю, что тип функции-члена равен asio::io_context::count_type (asio::io_context*)()
, а сигнатура функции должна быть видимой для компилятора, поскольку включен asio.hpp) и сообщить об ошибке unresolved overloaded function type
.
Любые предложенияисправить ошибку?