• 6458阅读
  • 0回复

[转载]Qt经典—Qt 线程类 [复制链接]

上一主题 下一主题
离线zjhcool
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-21
Qt对线程的支持已经有很多年了(发布于2000年九月22日的Qt2.2引入了QThread类),Qt 4.0版本的release则对其所有所支持平台默认地是对多线程支持的。(当然你也可以关掉对线程的支持,参见这里)。现在Qt提供了不少类用于处理线程,让你我们首先预览一下:
QThread
QThreadQt中一个对线程支持的核心的底层类。 每个线程对象代表了一个运行的线程。由于Qt的跨平台特性,QThread成功隐藏了所有在不同操作系统里使用线程的平台相关性代码。
为了运用QThread从而让代码在一个线程里运行,我们可以创建一个QThread的子类,并重载QThread::run() 方法:
class Thread : public QThread {
protected:
void run() {
/* your thread implementation goes here */
}
};



接着,我们可以使用:
class Thread : public QThread {
protected:
void run() {
/* your thread implementation goes here */
}
};



来真正的启动一个新的线程。 请注意,Qt 4.4版本之后,QThread不再支持抽象类;现在虚函数QThread::run()实际上是简单调用了QThread::exec(),而它启动了线程的事件循环。(更多信息见后文)
QRunnableQThreadPool
QRunnable [doc.qt.nokia.com] 是一种轻量级的、以“run and forget”方式来在另一个线程开启任务的抽象类,为了实现这一功能,我们所需要做的全部事情是派生QRunnable 类,并实现纯虚函数方法run()
class Task : public QRunnable {
public:
void run() {
/* your runnable implementation goes here */
}
};





Qt经典—Qt 线程类
时间: 2011-02-20 / 浏览次数: 0 views / 0个评论 发表评论 编辑本文
    Qt对线程的支持已经有很多年了(发布于2000年九月22日的Qt2.2引入了QThread类),Qt 4.0版本的release则对其所有所支持平台默认地是对多线程支持的。(当然你也可以关掉对线程的支持,参见这里)。现在Qt提供了不少类用于处理线程,让你我们首先预览一下:
QThread
QThreadQt中一个对线程支持的核心的底层类。 每个线程对象代表了一个运行的线程。由于Qt的跨平台特性,QThread成功隐藏了所有在不同操作系统里使用线程的平台相关性代码。
为了运用QThread从而让代码在一个线程里运行,我们可以创建一个QThread的子类,并重载QThread::run() 方法:
class Thread : public QThread {
protected:
void run() {
/* your thread implementation goes here */
}
};



接着,我们可以使用:
class Thread : public QThread {
protected:
void run() {
/* your thread implementation goes here */
}
};



来真正的启动一个新的线程。 请注意,Qt 4.4版本之后,QThread不再支持抽象类;现在虚函数QThread::run()实际上是简单调用了QThread::exec(),而它启动了线程的事件循环。(更多信息见后文)
QRunnableQThreadPool
QRunnable [doc.qt.nokia.com] 是一种轻量级的、以“run and forget”方式来在另一个线程开启任务的抽象类,为了实现这一功能,我们所需要做的全部事情是派生QRunnable 类,并实现纯虚函数方法run()
class Task : public QRunnable {
public:
void run() {
/* your runnable implementation goes here */
}
};




上一篇: Qt经典—事件与事件循环

标签: QRunnable, Qt, QtConcurrent, QThread, QThreadPool
本文链接: Qt经典—Qt 线程类
版权所有: Venus, 转载请注明来源Venus并保留链接地址!

相关文章




我的博客地址: http://newfaction.net
快速回复
限100 字节
 
上一个 下一个