以下Win32代码在不等待的情况下检查事件是否已发出信号。
handle = CreateEvent(NULL, true, false, NULL);
bool signaled = WaitForSingleObjectEx(handle, 0, true) != WAIT_TIMEOUT;
它在Qt中的等价物是什么?
我想要完成的任务:
我有两个线程:侦听器和发送器(发送命令)。当用户单击按钮时,操作会发送一系列命令,但我需要在发送以下命令之前验证是否收到第一个命令的响应(并检查它)。我以为我可以在互斥锁或其他东西周围同步它们......接收器会在接收到数据时发出互斥信号并发送,而不是等待它。我正在寻找Qt方便的方法来实现这一目标。我正在使用QTcpServer
派生类及其listen()
方法来侦听端口。
答案 0 :(得分:0)
没有,因为信号通常是无国籍的概念。在Qt中,信号只是一个函数调用。没有信号被“发信号”的概念。 “正在发出信号”的信号只是其方法调用尚未返回的信号 - 请回想一下,信号只是带有一些moc生成代码的方法。
答案 1 :(得分:0)
如果你在谈论等效的信号,我猜这里没有这样的。但你可以自己实现它:
class A {
public:
A() {
QMetaObject::Connection setEmmitedConnection = connect(this, &A::signal, [&setEmmitedConnection]() {
isSignalEmmited = true;
disconnect(setEmmitedConnection);
});
signals:
void signal();
private:
bool isSignalEmmited = false;
};
但我认为你不需要这样的东西。