首页 > 代码库 > Qt使用线程以及线程同步
Qt使用线程以及线程同步
把信号连接过来的事件,放到线程中的槽函数处理,达到该槽函数的处理不会卡主线程的效果
例子如下:
class Dummy : public QObject{ Q_OBJECTpublic: Dummy(QObject* parent = 0) : QObject(parent){}public slots: void emitsig() {emit sig();}signals: void sig();};///////////////////////////////////////////////////////////////////////////////////////class Object : public QObject{ Q_OBJECTpublic :Object(){}public slots: void slot(){qDebug() << "from thread slot:" << QThread::currentThreadId();}};///////////////////////////////////////////////////////////////////////////////////////include "main.moc"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); qDebug() << "main thread:" << QThread::currentThreadId(); QThread thread;Object obj; Dummy dummy; obj.moveToThread(&thread);//把槽函数操作移到子线程中处理 QObject::connect(&dummy, SIGNAL(sig()), &obj, SLOT(slot())); thread.start(); dummy.emitsig();//发送测试信号return a.exec();}// 输出:// main thread: 0x1a5c// from thread slot: 0x186c
线程的ID不同,表明slot在子线程中运行
具体可参考http://blog.csdn.net/c05170519/article/details/6459809
Qt使用线程以及线程同步
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。