C++ 一些Qt函数如何不阻塞?
当我调用QNetworkAccessManager::get()或QNetworkAccessManager::post()或许多其他方法时,程序流会在调用后继续进行,如果我想要进一步的交互,例如获取从服务器接收到的内容,我需要使用信号/插槽。这些函数是否在自己的线程中运行?但是,我使用线程的时候,我不得不调用类似MyClass::start()的东西,这在调用get()或post()时不会发生 在构建线程类时,在类中启动函数的唯一方法是通过MyClass:start()和MyClass::run()。但是现在我有一个类,其中有各种各样的函数可以被调用,这些函数应该在后台运行,以便主应用程序以后可以从这些函数接收信号 假设我会有这样的东西C++ 一些Qt函数如何不阻塞?,c++,multithreading,qt,qt5,C++,Multithreading,Qt,Qt5,当我调用QNetworkAccessManager::get()或QNetworkAccessManager::post()或许多其他方法时,程序流会在调用后继续进行,如果我想要进一步的交互,例如获取从服务器接收到的内容,我需要使用信号/插槽。这些函数是否在自己的线程中运行?但是,我使用线程的时候,我不得不调用类似MyClass::start()的东西,这在调用get()或post()时不会发生 在构建线程类时,在类中启动函数的唯一方法是通过MyClass:start()和MyClass::ru
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()
来执行其代码