【发布时间】:2010-12-14 05:09:58
【问题描述】:
我对线程编程完全陌生,而且由于该类使用 QThreads,我想知道为什么我不能从自身内部调用 QThread 的 start 函数并让它的 run 函数开始独立于另一个函数执行线程(当我这样做时程序似乎崩溃了)。相反,我必须从声明对象的任何地方调用 start 函数。这是为什么呢?
一些代码:
class ClassWithThread : public QThread
{
public:
ClassWithThread() {}
someFunction() {start();}
run()
{
//do some stuff here
}
}
这基本上就是我的班级所做的。当我打电话给someFunction 时,程序崩溃了。如果我从someFunction 中删除start 语句,并从程序外部调用start,那么它工作正常。
【问题讨论】:
-
启动什么样的功能?静态的还是什么?请发布更多代码。
-
在调用 Qthread::start() 而不是 start() 之后得到相同的结果吗?
-
@wrongusername 你得到什么编译器错误。
someFunction()和run()应该用它们的返回类型声明。 -
@Vijay:Q 从未提及任何编译错误,OP 仅提及崩溃/核心转储问题。
-
很难从这个伪代码中理解到底发生了什么。请为我们提供一个可以编译和测试的真实示例,包括一个实际创建对象并调用该函数的小型 main() 函数。该错误可能很难找到,因此所有细节都很重要。
标签: c++ multithreading qt qthread