Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 一些Qt函数如何不阻塞?_C++_Multithreading_Qt_Qt5 - Fatal编程技术网

C++ 一些Qt函数如何不阻塞?

C++ 一些Qt函数如何不阻塞?,c++,multithreading,qt,qt5,C++,Multithreading,Qt,Qt5,当我调用QNetworkAccessManager::get()或QNetworkAccessManager::post()或许多其他方法时,程序流会在调用后继续进行,如果我想要进一步的交互,例如获取从服务器接收到的内容,我需要使用信号/插槽。这些函数是否在自己的线程中运行?但是,我使用线程的时候,我不得不调用类似MyClass::start()的东西,这在调用get()或post()时不会发生 在构建线程类时,在类中启动函数的唯一方法是通过MyClass:start()和MyClass::ru

当我调用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,这些东西对我来说有点陌生


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

对不起,我听不懂你说的话……告诉我我是否理解:你想获取()或post()一些东西,同时做一些其他的事情(顺便说一句,这是合理的…),而不使用线程或信号/插槽?我使用get()和post()作为示例函数,它们似乎在自己的线程中运行,但不是用start()函数启动,而是称为direction。我想知道这是怎么发生的,因为我想做同样的事情(不是字面上的,而是在没有start()的情况下在不同的线程中运行)。如果不调用start()/run(),优势在哪里?这是一个线性函数。我假设Qt使用不同的线程来实现异步。一个可能的答案可能是在自己的线程中使用
MyClass
,并将函数用作
公共插槽
,然后连接它们。另一件事是
Func(n)(
将调用
QtConcurrent::run()
来执行其代码