微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyQt5:pyqtSignals 线程安全吗?

如何解决PyQt5:pyqtSignals 线程安全吗?

我正在学习如何使用 PyQt5,但我有很多问题。

我已经开始实施 QThreads 来替换我在 UI 中一直使用的线程,因为我意识到混合线程和 QThreads 可能会导致以后出现问题,并且已经开始同时使用 pyqtSignal

到目前为止,我已经看到 pyqtSygnal 需要在类级别上实现才能工作(将它放在类构造函数中是行不通的)

在我目前使用的架构中,我有一个 pyqtSignal,它在主线程中实例化,然后由所有子线程使用。这是因为有一个类负责我所有程序的日志。

我不确定这是否是一个好的实现。

这是我的问题:

  • pyqtSignals 线程安全吗?
    我知道他们使用队列系统来保证线程安全,但是 emit() 方法本身是线程安全的吗?我对它们的了解有点有限
  • 我需要用锁来保护我的 pyqtSignals 吗?
  • 我可以将多个不同的信号发送到同一个插槽而不会出现任何问题吗?

解决方法

信号是 QObject 中为数不多的线程安全元素之一,因此不需要保护数据。因此,您可以将不同类型的信号连接到同一插槽。

由于信号是线程安全的,因此 Qt 建议与位于不同线程中的 QObject 通信。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。