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,我想实现一种机制,其中插槽将在单独的线程中处理。显然,这样的实现将不起作用,我需要一种方法来防止功能完成,同时仍然能够接收信号。如何实现这一点 void connect() { t_ = std::thread(&myclass::start, this); } void start() { QTcpSocket *socket = new QTcpSocket; QObject::connect( socket, &QAbs

我想实现一种机制,其中插槽将在单独的线程中处理。显然,这样的实现将不起作用,我需要一种方法来防止功能完成,同时仍然能够接收信号。如何实现这一点

void connect() {
    t_ = std::thread(&myclass::start, this);
    }
    

void start() { 

QTcpSocket *socket = new QTcpSocket;

QObject::connect(
          socket, &QAbstractSocket::connected, this,
          [this]() {
            //do1()
          },
          Qt::DirectConnection);

QObject::connect(
          socket, &QAbstractSocket::disconnected, this,
          [this]() {
            //do2()
          },
          Qt::DirectConnection);

QObject::connect(
          socket, &QAbstractSocket::readyRead, this,
          [this]() {
            //do3()
          },
          Qt::DirectConnection);
    
    }

在我的代码中,我发现在工作线程内创建套接字更简单。这个示例可能会帮助您:“显然这样的实现不会工作”:您认为这是为什么?