我已经尽力找到答案,但无法回答以下问题:
Qt信号/槽机制如何与非Qt线程交互?
特别地,从一个非Qt(例如TBB)线程发出信号,被主事件循环中的一个槽捕获是否安全?假设我明确使用排队连接将其连接起来?(我的感觉是指定连接为排队连接是必需的;这正确吗?)
(作为一个附加问题,我一直认为Qt同步类,例如
(作为澄清的说明,我担心的是,如果它没有检测到信号是从不同的Qt线程发出的,则排队连接机制将不使用保护措施,例如互斥锁,将元调用添加到主线程事件队列中。)
(最后的补充:我相信因为Qt机制是基于特定于平台的原语实现的,所以实践中我正在尝试做的所有事情都会优雅地工作,但我也想知道Qt是否提供任何保证这些事情会工作。)
Qt信号/槽机制如何与非Qt线程交互?
特别地,从一个非Qt(例如TBB)线程发出信号,被主事件循环中的一个槽捕获是否安全?假设我明确使用排队连接将其连接起来?(我的感觉是指定连接为排队连接是必需的;这正确吗?)
(作为一个附加问题,我一直认为Qt同步类,例如
QMutex
,可以跨非Qt线程工作。这正确吗?)(作为澄清的说明,我担心的是,如果它没有检测到信号是从不同的Qt线程发出的,则排队连接机制将不使用保护措施,例如互斥锁,将元调用添加到主线程事件队列中。)
(最后的补充:我相信因为Qt机制是基于特定于平台的原语实现的,所以实践中我正在尝试做的所有事情都会优雅地工作,但我也想知道Qt是否提供任何保证这些事情会工作。)