gpt4 book ai didi

c++ - boost asio io_service 对象和底层线程

转载 作者:行者123 更新时间:2023-11-30 04:18:37 25 4
gpt4 key购买 nike

我正在使用 boost asio 库。这是我的实现

boost::asio::io_service ioservice;
boost::asio::io_service::work work(ioservice);
boost::thread_group threads;
for (int i = 0; i < 10; i++)
{
threads.create_thread(
boost::bind(&boost::asio::io_service::run, &ioservice));
}

然后,每当我需要一个 io 服务对象(例如异步读/写/定时器)时,我将这个 ioservice 对象的实例作为参数传递。如果我需要处理很多异步操作,我只是增加线程数。

有些同事只用一个工作线程创建多个 io 服务对象。

哪个是正确的实现方式?可以改进吗?

最佳答案

这两种方法都是正确的,但这取决于您要实现的目标。 io_service 是一个出色的跨平台线程安全工作队列。

如果您希望在某个线程上处理一些工作(即序列化某些工作项),在一个线程上运行一个 io_service 是有意义的。

如果您希望处理一些工作,但不关心它在哪个线程上处理或处理顺序,那么让一个 io_service 在多个线程上运行是有意义的。

关于c++ - boost asio io_service 对象和底层线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325436/

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