gpt4 book ai didi

c++ - 在处理程序中排队请求时,从多个线程或一个线程调用boost asio io_service.run

转载 作者:行者123 更新时间:2023-12-02 10:38:22 25 4
gpt4 key购买 nike

当仅在处理程序中排队请求而不在处理程序中立即处理请求时,我认为从多个线程调用io_service.run()没有好处。

服务器类中,我从多个线程调用m_ios.run():

const unsigned int threadPoolSize = std::thread::hardware_concurrency() * 2;
for (unsigned int i = 0; i < threadPoolSize; i++)
{
std::unique_ptr<std::thread> th(new std::thread([this]() { m_ios.run(); }));
m_threadPool.push_back(std::move(th));
}

在由处理异步读取的服务器管理的 服务类中:
void handleNextRequest()
{
m_connection->async_read(m_request, m_connection->getStrand().wrap(boost::bind(&Service::onRequestRecieved, this, boost::asio::placeholders::error)));
}

void onRequestRecieved(const boost::system::error_code& ec)
{
if (!ec)
{
addServerRequest(m_request); // Adds request to a thread-safe queue
handleNextRequest();
}
else
{
stop();
}
}

在我的情况下,从多个线程运行io_service.run()有什么好处?

最佳答案

void first(){
// do your things
}
void second(){
// do your things
}
void allthings(){
thread t1(first);
thread t2(second);
t1.join();
t2.join();
}

int main() {

allthings();

return 0;
}

关于c++ - 在处理程序中排队请求时,从多个线程或一个线程调用boost asio io_service.run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com