c++ - 主线程和线程池
问题描述
标准的习惯用法似乎是创建n = std::thread::hardware_concurrency()
线程并将它们放入线程池中。但是主线程和其他线程一样,因此我们可能只创建n - 1
线程并将主线程视为线程池的一部分并节省一些资源。有什么理由不应该这样做吗?
解决方案
如果您也在主线程中进行计算,那么当然可以。
但我看到的惯用语往往是主线程将工作分派到线程池中,然后等待线程池完成。如果该等待不是通过忙等待完成的,而是类似于 a condition_variable
,那么它不会占用处理器内核很长时间。
主线程也常用于处理操作系统信号。特别是在 UI 应用程序的情况下,主线程需要保持响应,因此将其用于可能运行更长时间的任务会导致糟糕的用户体验。
推荐阅读
- sql - 在 WHERE 子句中使用 AS 查询问题
- android - 指向本机共享库的 Flutter 插件链接失败(RPATH 不起作用)
- math - 使不断增加的正数流按比例缩小和倒计时
- javascript - 如何通过javascript函数改变modal的内容?
- html - 倾斜图像而不扭曲它
- python - Python中的自定义比较器
- python-3.x - 使用 rdflib 和 sparql 搜索 xml 文件
- c# - 在 Unity 2d 中用鼠标限制头部转动
- python - 使用 shell 将 JSON 字符串转换为字典而不进行转义
- c++11 - 通用引用作为参数和返回类型