c++ - 为什么我不能从自身内部调用类的启动函数?

标签 c++ multithreading qt qthread

我完全不熟悉线程编程,并且由于该类使用 QThreads,我想知道为什么我不能从自身内部调用 QThread 的 start 函数并让它的 运行 函数开始独立于另一个线程执行(当我这样做时程序似乎崩溃了)。相反,我必须从声明对象的任何地方调用 start 函数。这是为什么?

部分代码:

class ClassWithThread : public QThread
{
public:
    ClassWithThread() {}
    someFunction() {start();}
    run()
    {
        //do some stuff here
    }
}

我的类(class)基本上就是这样做的。当我调用 someFunction 时,程序崩溃了。但是,如果我从 someFunction 中删除 start 语句,并从程序外部调用 start,那么它就可以正常工作。

最佳答案

QThread 仅当您想扩展线程功能时才应派生,而不是像这样专门针对您的工作。这article将帮助您理解 QThread 的使用。

因此您必须创建一个 QThread 并从外部启动它,然后将一个对象移动到它来完成这项工作。阅读这个例子:http://labs.qt.nokia.com/2006/12/04/threading-without-the-headache/

希望能帮助避免此类问题

关于c++ - 为什么我不能从自身内部调用类的启动函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436083/

相关文章:

c++ - 对 org::opensplice::core::DWDeleter::DWDeleter 的 undefined reference

C#/WPF - 我无法从后台工作人员更新 UI

qt - QWebEngine 中 QWebElement 和 QWebElementCollection 的等效项

c++ - 如何使用 gdb 达到与使用可视化调试器相同的效率水平?

c++ - 通过函数越来越深入地传递指针

C++对删除错误

.net - 线程的垃圾收集

java - 内存泄漏线程

c++ - Qt Creator 程序因使用 taglib 而崩溃

使用方向四元数旋转的 QtQuickPaintedItem