2011-03-27 87 views
2

我正在为多核机器编写可移植代码,并且我想要内核级线程,以便线程可以使用多个cpu。在阅读Qt助手的QThread文档后,我仍然没有发现任何提示。QThread是在用户级别,内核级别还是两者上?

在Windows XP上,QtSDK中的多线程示例(mandelbrot)仅使用一个内核。所以我猜想在XP上只有用户级别的线程是可能的。因为没有安装完整的SDK,所以我还没有在Linux或OSX上测试过。 编辑:在SDK中给出的例子是愚蠢的 - 它只使用一个线程进行计算,所以绑定到只有一个核心是误导。自己构建一个示例我可以使用所有内核,所以在XP上使用mingw/GCC Qt使用内核级线程。

那么,QThread使用什么样的线程?是否可以指定使用哪种线程?

多个进程也是一个与共享内存结合的选项。

编辑

http://doc.qt.io/qt-4.8/thread-basics.html给出了一个很好的介绍。

回答

3

我不知道Windows,但在Unix上它使用pthreads。 QT不会公开API,因为它需要与平台和硬件无关。跨CPU的QThread分发留给OS调度器,你不能通过一些QT API来提示它。

3

QThread Class Reference

甲的QThread代表程序内的控制的一个单独的线程;它与进程内的所有其他线程共享数据,但是独立执行的方式是单独的程序在多任务操作系统上执行的方式。

用你的话说,这是一个“内核”线程。

另外,在Windows XP上“只有用户级线程可行”的结论肯定是不正确的。

相关问题