C++ 将QVector从信号传递到不同线程中的插槽是否会导致数据复制?
我读到QVector类使用隐式数据共享来最大化资源使用和最小化复制。我不知道向不同线程中的插槽发送带有QVector参数的信号是否会导致数据复制!这些问题也与这个问题有关: 但我无法从这些观点中理解要点。很明显,我的问题是: 我有一个信号:C++ 将QVector从信号传递到不同线程中的插槽是否会导致数据复制?,c++,qt,qtcore,qt-signals,qvector,C++,Qt,Qtcore,Qt Signals,Qvector,我读到QVector类使用隐式数据共享来最大化资源使用和最小化复制。我不知道向不同线程中的插槽发送带有QVector参数的信号是否会导致数据复制!这些问题也与这个问题有关: 但我无法从这些观点中理解要点。很明显,我的问题是: 我有一个信号: void someSignal(QVector<int> values); void someSignal(QVector值); 和一个插槽: void someSlot(QVector<int> values); void
void someSignal(QVector<int> values);
void someSignal(QVector值);
和一个插槽:
void someSlot(QVector<int> values);
void someSlot(QVector值);
它们在不同的线程中,我将它们连接起来。因此,连接类型是Qt::QueuedConnection。我还应该声明QVector元素在插槽中没有修改。它们只是阅读而已
发射信号是否会导致QVector元素被复制
发射信号是否会导致QVector元素被复制
不,政府也很清楚:
隐性分享发生在幕后;程序员不需要担心它。即使在多线程应用程序中,也会发生隐式共享,例如
仅强调文件中该部分的第一段:
Qt对其许多值类使用了一种称为隐式共享的优化,特别是QImage和QString。从Qt4开始,隐式共享类可以像其他任何值类一样安全地跨线程复制。它们是完全可重入的。隐性共享实际上是隐性的