马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Qt中的毗连范例
Qt 框架提供了多种毗连范例,用于在信号和槽之间创建毗连时指定调用的方式。以下是告急的毗连范例及其区别:
- Qt::AutoConnection:
- 默认毗连范例。假如信号和槽在同一个线程中,则使用直接毗连(Qt:
irectConnection);假如它们在差别线程中,则使用列队毗连(Qt: ueuedConnection)。
- Qt:
irectConnection:
- 信号和槽在同一个线程中直接调用槽函数。信号发出时,槽函数立即被调用,雷同于平凡的函数调用。
- Qt:
ueuedConnection:
- 信号和槽在差别线程中时使用。信号发出时,槽函数调用被放入罗致者线程的变乱队列中,并在罗致者线程的变乱循环中异步实行。
- Qt::BlockingQueuedConnection:
- 雷同于Qt:
ueuedConnection,但在信号发出线程中壅闭,直到槽函数在罗致者线程中实行完毕。仅在信号和槽在差别线程中时有用。必要留意的是,这种毗连范例大概导致死锁,尤其是在槽函数中发出信号回到发出信号的线程。
- Qt::UniqueConnection:
- 这个标记可以与其他毗连范例联合使用,确保同一个信号和槽之间只有一个毗连。比方,Qt::AutoConnection | Qt::UniqueConnection。
- Qt::SingleShotConnection:
- 这个标记也可以与其他毗连范例联合使用,确保信号只触发一次槽函数调用。比方,Qt::AutoConnection | Qt::SingleShotConnection。
毗连范例的使用场景
- Qt::AutoConnection: 通常是最常用的毗连范例,由于它会自动选择符合的毗连方式,确保信号和槽在同一线程中直接调用,大概在差别线程中异步调用。
- Qt:
irectConnection: 实用于信号和槽在同一线程中时,且必要立即实行槽函数的情况。
- Qt:
ueuedConnection: 实用于信号和槽在差别线程中时,确保槽函数在罗致者线程中异步实行。
- Qt::BlockingQueuedConnection: 实用于必要在发出信号的线程中等候槽函数实行完毕的情况,但必要警惕制止死锁。
- Qt::UniqueConnection: 实用于必要确保信号和槽之间只有一个毗连的情况,制止重复毗连。
- Qt::SingleShotConnection: 实用于必要信号只触发一次槽函数调用的情况,常用于一次性利用。
选择符合的毗连范例可以进步应用步调的性能和可靠性,特别是在处理处罚多线程情况时。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |