如果两个不同线程中有两个插槽,并且这些插槽连接到第三个线程中的信号。是否会发生这样的情况:两个时隙都会被信号同时调用,或者它们每次被调用同步?
我问,因为我想发送一些回调数据结构(用QSharedPointer
封装)并询问是否需要内部锁定机制。
答案 0 :(得分:2)
如果您使用Qt :: QueuedConnection将信息传递给线程,则不需要锁定实际的信号/槽调用,因为QueuedConnection机制以线程安全的方式处理此问题。
话虽这么说,你仍然需要保护线程访问的任何共享内存,无论它们是如何被调用的。第三个线程发出单个信号导致两个槽被调用的事实不会改变这一点。
答案 1 :(得分:0)
看看here(有关线程的Qt信号/插槽机制的官方Qt文档)。
每个插槽都在其线程内调用,因此我很确定任何事情都可能发生。你应该安装一个锁机制。