gpt4 book ai didi

c++ - io_service::run() 的专用线程

转载 作者:可可西里 更新时间:2023-11-01 16:28:01 24 4
gpt4 key购买 nike

我想提供一个由一个全局线程驱动的全局io_service。很简单,我只是让线程主体调用 io_service::run()。但是,这不起作用,因为 run (run_one, poll, poll_one) 如果没有工作则返回去做。但是,如果线程反复调用run(),就会在无事可做时忙循环。

我正在寻找一种方法让线程在 io_service 中没有任何工作要做时阻塞。我可以在混合中添加一个全局事件,以便线程阻塞。但是,这将要求 io_service 的用户在每次使用该服务时通知该事件。不是理想的解决方案。

注意:没有实际的全局变量,我从不使用事件进行并发我只是将问题简化为我的确切需要。真正的目标是一个不需要 io_service 作为构造参数的 asio::deadline_timer 子类。

最佳答案

您需要创建一个 io_service::work 对象。

请参阅文档的这一部分:

Stopping the io_service from running out of work

关于c++ - io_service::run() 的专用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942550/

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