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 - Fatal编程技术网

C++ 在qt中创建另一个网络线程

C++ 在qt中创建另一个网络线程,c++,multithreading,qt,C++,Multithreading,Qt,我是qt新手,正在尝试创建一个qt应用程序。到目前为止,应用程序有1个线程运行libevent事件循环。我想创建另一个线程(这将是一个负责ssl请求的永久网络qt线程) 我已经创建了子类为QOBject的WorkerObject。此外,我还有一个MyThread,它将QThread子类化,在run方法中运行事件循环。我在main中创建这个线程,并在应用程序结束时终止它 我想在WorkerObject内部执行的所有网络操作(包括post请求)。如何以及在何处创建适当的WorkerObject,以便

我是qt新手,正在尝试创建一个qt应用程序。到目前为止,应用程序有1个线程运行libevent事件循环。我想创建另一个线程(这将是一个负责ssl请求的永久网络qt线程)

我已经创建了子类为QOBject的WorkerObject。此外,我还有一个MyThread,它将QThread子类化,在run方法中运行事件循环。我在main中创建这个线程,并在应用程序结束时终止它

我想在WorkerObject内部执行的所有网络操作(包括post请求)。如何以及在何处创建适当的WorkerObject,以便在MyThread的事件循环中处理其所有信号和信号。因为例如,每当用户希望我发送post/get请求时,我都需要调用该方法(它发送post/get请求)


提前感谢您的回答。

在QThread中使用对象的条件是,一旦线程启动,它们只能通过信号和插槽进行通信。因此,如果workerobject需要开始工作,则必须通过信号触发

看看这个,这是推荐的方法

基本上,您可以将Qthread的started信号连接到workerobject
startAndLingslRequest
。然后在非多线程的情况下调用
startAndLingslRequest
对象的位置启动线程


每当用户希望您执行某项操作时,您只需在主循环中触发信号,所有连接的插槽将在稍后执行。

除非您创建的服务器将同时处理大量请求,否则我建议您在这种情况下不要使用线程。Qt的网络类是异步的,因此您可以很容易地在主线程上继续使用它们。看一看,它是从qtcsocket派生的。有一些示例说明了如何使用Ssl创建服务器和客户机以及如何使用它们。

通常,除非另有说明,否则不要将Qthread子类化。这是一个反复出现的主题,我的主线程中已经有一个事件循环(来自libevent库)。这就是为什么我希望在另一个线程中为我的post requestsQt创建一个事件循环的原因。SQT是一个多平台开发环境,它提供了一个带有QCoreApplication或QApplication的事件循环。为什么要使用libevent库呢?这是以前使用过的代码,我们不想扔掉它。我建议您转到Qt,但无论如何,为了更直接地回答您的问题,您应该在主线程中创建workerObject,设置信号和插槽的连接,然后使用WorkerObject->MoveToHead(MyThread)将其移动到线程;然后使用信号和插槽在主线程和新线程之间通信。