将更高的优先级设置为 boost::asio 线程处理进程

Set a higher priority to a boost::asio thread wrt the process

本文关键字:asio 线程 处理 进程 boost 优先级 设置      更新时间:2023-10-16

我知道C++有一些方法可以设置线程的优先级。类似于这里正在讨论的内容。与此类似,boost::asio运行的线程中是否有类似的东西?我正在做一个async_read和async_write,以从网络读取和写入数据。

请注意,我确实想在读取和写入之间设置优先级,如 boost::asio 示例中所述。我宁愿想在整个过程中为 asio 读取器线程设置更高的优先级。

如果boost::asio没有提供直接机制来提高其线程的优先级,那么我是否可以创建std::thread,像这里讨论的那样为其设置更高的优先级并将其提供给 asio 以将其用于async_read/async_write?或者这有可能用一根线吗?

环境:
我正在使用带有 C++11 编译器的 boost 1.68。

我和评论者在一起,怀疑这是否有用。

但是要回答您的问题:没有Boost Asio线程之类的东西。

明确记录了原因:

线程和提升 Asio

因此,图书馆用户有责任创建和 管理将向其发送通知的所有线程。

采用这种方法的原因包括:

  • 通过仅从单个线程调用io_context::run(),用户的代码可以避免与 同步。例如,库用户可以实现可扩展 单线程服务器(从用户的角度来看(。
  • 库用户可能需要在线程启动后不久和任何其他应用程序代码之前在线程中执行初始化 被执行。例如,Microsoft COM 的用户必须调用CoInitializeEx在可以从中调用任何其他 COM 操作之前 线。
  • 库接口与线程创建和管理接口分离,并允许在平台上实现 线程不可用的地方。

因此,您可以创建自己的线程 - 我想除了主线程 - 并且可以以您需要的任何方式执行此操作。