0

我正在使用 Qt 创建一个简单的多线程应用程序,并且我想打印我从线程类 (QThread) 中的函数创建的线程数。

例如,如果我创建了 3 个 T 类线程,函数 T.printcount 应该打印出“3 个线程处于活动状态”。

我假设我将在 T 类(可能是主线程)之外创建一个变量,并从线程类进行访问。我该怎么做?

在类 T 中创建一个虚拟静态变量并访问它会更好吗?

其他想法?

4

2 回答 2

1

Quote: 如果我创建 3 个 T 类线程,函数 T.printcount 应该打印出“3 个线程处于活动状态”。

在这种情况下,最好在类中创建一个静态变量,然后在每次创建对象时更新它。顺便说一句,您可以访问静态变量而无需函数。

类似于:ClassName::StaticVariable

如果您要通过函数打印类的静态变量,请不要忘记将该函数设为静态。

于 2013-09-30T00:02:19.573 回答
1

由于一种称为队列连接的机制,跨不同线程连接信号和槽是安全的。因此,一种选择可能是连接来自线程的信号

signals:

    void threadCreated();

从主线程到某个对象,即你的类 ThreadCounter 的一个实例:

class ThreadCounter : public QObject
{
    Q_OBJECT
    int count;

public slots:
    void increaseCountVariable() {
        count++;
    }
//...
};

并连接它们:

connect(myThread, &MyThread::threadCreated, myThreadCounter,
                    &ThreadCounter::increaseCountVariable);

来自Qt 页面

重要的是要记住,QThread 对象通常存在于创建它的线程中,而不是它管理的线程中。注意:如果您与对象交互,使用队列信号/槽连接以外的任何技术(例如直接函数调用),则需要采取通常的多线程预防措施。

于 2013-09-30T00:15:10.910 回答