有没有可能在Qt中创建一个指向shared_ptr的const引用的信号/插槽?如果可以,那么如何实现呢?我想要这样一个信号:
void signal( shared_ptr const & )
我知道如何在没有常量引用的情况下实现,那就是使用类型shared_ptr,但出于效率原因,我希望避免复制。然而,对于引用类型,同样的语法不起作用:
许多标准API都有
性能最大的问题不是复制时间,而是当对象被复制到每个接收器时需要进行的互斥锁定/解锁的数量--这些接收器很多。由于多个线程使用该对象,这会引入明显的减速/瓶颈。如果shared_ptr实际上只使用原子操作,那么这个成本也是微不足道的,但关于信号中const引用的一般问题仍然存在。
void signal( shared_ptr const & )
我知道如何在没有常量引用的情况下实现,那就是使用类型shared_ptr,但出于效率原因,我希望避免复制。然而,对于引用类型,同样的语法不起作用:
Q_DECLARE_METATYPE(shared_ptr<SomeClass> const &)
qRegisterMetaType<shared_ptr<SomeClass> const&>();
许多标准API都有
QString const &
,因此我认为这在基本上是可能的,只是我无法弄清语法。
性能最大的问题不是复制时间,而是当对象被复制到每个接收器时需要进行的互斥锁定/解锁的数量--这些接收器很多。由于多个线程使用该对象,这会引入明显的减速/瓶颈。如果shared_ptr实际上只使用原子操作,那么这个成本也是微不足道的,但关于信号中const引用的一般问题仍然存在。