一些Qt函数如何阻止?

时间:2013-11-14 01:18:35

标签: c++ multithreading qt qt5

当我调用QNetworkAccessManager :: get()或QNetworkAccessManager :: post()或许多其他方法时,程序流程会在调用后继续进行,如果我想进一步交互,比如从服务器收到的内容,我需要使用信号/插槽。这些函数是否在自己的线程中运行?但是我使用线程的时候我不得不调用类似MyClass :: start()的东西,这在调用get()或post()时不会发生。

我构建一个线程类的时候,在类中启动函数的唯一方法是通过MyClass:start()和MyClass :: run()。但是现在我有一个类,它有各种各样的函数被调用,这些函数应该在后台运行,以便主应用程序以后可以从这些函数接收信号。

假设我有这样的东西

class MyClass
{
   public:
     void func1();
     void func2();
};

MyClass::func1()
{
   // move off into other thread
   // do stuff
   emit signal1(data1)
}

MyClass::func2()
{
   // move off into other thread
   // do stuff
   emit signal2(data2)
}

我应该能够直接访问MyClass :: func1或func2,如果只通过MyClass :: start()来访问它们会很麻烦。

我希望这是有道理的,我更像是一个php人,这些东西对我来说有些陌生。

总之,我希望有一个具有多个公共函数的类,所有这些函数都可以在自己的线程上调用。我认为。也许我走错了路。

0 个答案:

没有答案