我正在为多核机器编写可移植代码,我想要内核级线程,因此线程可以使用多个cpu。在阅读Qt助手的QThread文档后,我仍然没有找到任何提示。
在Windows XP上,来自QtSDK的多线程示例(mandelbrot)只使用了一个核心。所以我想在XP上只有用户级线程是可能的。到目前为止,我还没有在Linux或OSX上测试过,因为没有安装完整的SDK。 编辑:SDK中给出的示例是愚蠢的 - 它只使用一个线程进行这些计算,因此仅绑定到一个核心是误导性的。自己构建一个样本我可以使用所有内核,所以在XP上使用mingw / GCC Qt使用内核级线程。
那么,QThread使用了哪种线程?是否可以指定使用哪种线程?
多个进程也可以与共享内存结合使用。
修改
答案 0 :(得分:3)
我不了解Windows,但在Unix上它使用的是pthreads。 QT没有为CPU亲和力公开API,因为它需要独立于平台和硬件。跨CPU的QThread分配留给操作系统调度程序,你不能通过某些QT API提示它。
答案 1 :(得分:3)
QThread表示程序中单独的控制线程;它与流程中的所有其他线程共享数据,但以独立程序在多任务操作系统上的方式独立执行。
用你的术语来说,它是一个“内核”线程。
此外,Windows XP上“只有用户级线程可能”的结论肯定是不正确的。