|
|
1
2
你有几个相互关联的问题。 对我来说,最重要的问题是与处理线程的信号/插槽有关。 在单个线程中使用信号/插槽时,qt默认假定 AutoConnection 或“直接”连接。在直接连接模式下,信号/插槽的作用几乎与回调函数完全相同。这意味着发出信号的函数基本上执行子例程调用。 在跨线程传输信号/插槽时,qt默认情况下采用queuedconnection。这里发生的事情很复杂。序列是
既然知道了这一点,回到您原来的问题,如何知道时隙函数何时停止处理?Qt没有一个我知道如何传递这些信息的习惯用法。但是Qt信号/插槽的习惯用法是,信号线程不应该知道插槽如何工作或连接类型是什么。 所以我的建议是通过一个指向待处理数据的指针传递数据。在数据中,我将添加两个字段-
使用这种方法- -调用线程没有理由直接了解信号线程。 -如果从单线程或多线程开始,这个结构中没有需要更改的内容。 希望这对你的问题有帮助。这是我们商店目前使用的方法。 |
|
|
2
1
这个成语不是Qt特有的。我会为你已经提出的第二种可能性的变体辩护。但是,您不需要为答案注册信号/插槽对,只需传递一个回调,该回调将由生产者处理,但可能在消费者线程上进行。例如:
在消费者方面,你需要:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |