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 Dbus更具响应性?(当主线程忙时)_C++_Multithreading_Qt_Dbus_Qtdbus - Fatal编程技术网

C++ 如何使Qt Dbus更具响应性?(当主线程忙时)

C++ 如何使Qt Dbus更具响应性?(当主线程忙时),c++,multithreading,qt,dbus,qtdbus,C++,Multithreading,Qt,Dbus,Qtdbus,我使用qtdbus来监视信号。但是,由于主Qt线程经常忙于长时间运行的任务(我目前无法更改这种设计),因此在由另一个程序发送Qt dbus消息和被调用的插槽之间有很长的延迟。我怎样才能减少延误 我连接一个插槽,当接收到信号时调用,如下所示: #include <QtDBus> #include <QString> #include <QObject> MyDbus : public QObject { public: MyDbus() {

我使用qtdbus来监视信号。但是,由于主Qt线程经常忙于长时间运行的任务(我目前无法更改这种设计),因此在由另一个程序发送Qt dbus消息和被调用的插槽之间有很长的延迟。我怎样才能减少延误

我连接一个插槽,当接收到信号时调用,如下所示:

#include <QtDBus>
#include <QString>
#include <QObject>

MyDbus : public QObject {
public:
    MyDbus() {
        QDBusConnection::systemBus().connect("", "path", "interface.com", "member", this, SLOT(mySlot(QString)));
    }

private slots:
    void mySlot(QString& message) const {
        // Do something.
    }
 };
#包括
#包括
#包括
MyDbus:公共QoObject{
公众:
MyDbus(){
QDBusConnection::systemBus().connect(“,”path“,”interface.com“,”member“,”this,SLOT(mySlot(QString)));
}
专用插槽:
void mySlot(QString和message)常量{
//做点什么。
}
};

使用Qt 4.8.6.

难道你不能从后台线程运行d-bus调用吗?根据这一点,不可以。在这种情况下,似乎只有两种解决方案:a)更改代码,使其不阻塞主线程,或b)修补Qt,使其不受此d-bus限制。将任何块从主线程移动到工作线程。Presto.难道你不能从后台线程运行d-bus调用吗?根据这一点,不。在这种情况下,似乎只有两种解决方案:a)更改代码,使其不阻塞主线程,或b)修补Qt,使其不受d-bus限制。将所有阻塞从主线程移到工作线程。急板地。