首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symbian qt线程

Symbian qt线程
EN

Stack Overflow用户
提问于 2010-04-14 14:10:53
回答 2查看 1.2K关注 0票数 1

1)在symbian中,不推荐使用c++线程。相反,他们建议将活动对象用于多任务。目前我正在使用QT在symbian中开发一个应用程序。因为QT中没有活动对象,所以我想到了使用线程。我的问题是,我可以使用线程吗,这是推荐的吗?如果不推荐,如何实现多任务。

2)我已经创建了一个示例线程类,如下所示。当我从主窗口的构造函数调用测试函数时,线程将启动,但UI将处于挂起状态,实际上主窗口本身将不会显示。请帮我解决这个问题。

代码语言:javascript
复制
class CSampleThread: public QThread

{
    Q_OBJECT

public:
    CSampleThread(QObject *parent = 0) : QThread(parent)
    {}

    virtual ~CSampleThread()
    {}

    void test(){
        QThread::start(LowPriority);
    }

protected:

    void run()
{
    while(true){}

    }
};
EN

回答 2

Stack Overflow用户

发布于 2010-04-14 14:36:00

可能是"while(true)“正在耗尽主线程的CPU周期。尝试在循环体中添加一个调用,以使其输出()或睡眠()。

票数 1
EN

Stack Overflow用户

发布于 2010-04-14 20:03:20

您说得对,对于Symbian C++中的大多数程序的开发,使用协作多任务(也称为活动对象)比抢占式多任务(即线程)更受欢迎。但是,当异步操作可能需要很长时间时,在单独的线程中执行它可能是一个好主意。虽然可以使用活动对象实现长时间运行的操作,但这样做可能会导致应用程序变得无响应,因为活动调度程序在执行长时间运行的RunL()函数时将无法处理输入事件。

类似地,在Qt中,只有当您的应用程序需要执行长时间运行的任务时,才需要使用线程。在本地Symbian代码中使用AO处理的事件处理由Qt的事件系统负责,异步通知通过信号和插槽传递。毫不奇怪,Symbian上的Qt事件循环是使用活动对象实现的。

因此,虽然我们可以为QThread的使用提供帮助,但这是否是正确的解决方案的问题取决于您试图解决的问题的性质。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2635223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档