作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为多核机器编写可移植代码,我想要内核级线程,这样线程就可以使用多个 CPU。在阅读 Qt Assistant 上的 QThread 文档后,我仍然没有找到任何提示。
在 Windows XP 上,QtSDK 中的多线程示例 (mandelbrot) 仅使用一个内核。所以我猜在 XP 上只有用户级线程是可能的。到目前为止,我还没有在 Linux 或 OSX 上测试过,因为没有安装完整的 SDK。编辑:SDK 中给出的示例很愚蠢——它只使用一个线程进行这些计算,因此仅绑定(bind)到一个内核会产生误导。我自己构建一个示例,我可以使用所有内核,因此在带有 mingw/GCC 的 XP 上,Qt 使用内核级线程。
那么,QThread使用了哪些线程呢?是否可以指定使用何种线程?
多进程也是与共享内存结合的一个选项。
编辑
最佳答案
我不知道 Windows,但在 Unix 上它使用 pthreads。 QT 没有为 CPU 亲和性公开 API,因为它需要独立于平台和硬件。跨 CPU 的 QThread 分配留给操作系统调度程序,您不能通过某些 QT API 提示它。
关于c++ - QThread 是在用户级别、内核级别还是两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448341/
我是一名优秀的程序员,十分优秀!