LINUX.ORG.RU

Qt сигналы

 , ,


0

1

Подскажите как работает вот этот сигнал:

binaryMessageRecived(const QByteArray &)

Что после выхода из функции-передатчика объект не разрушается? А если другой поток, и его остановить и уничтожить???

Разрушается, но при использовании direct connection выход из вызывающей функции происходит позже, а при queud объект копируется внутрь специального event'а

annulen ★★★★★ ()
Ответ на: комментарий от LinuxDebian

Специально для вас в бэке они уже используются, так что пусть себе копируется пока не упрёшься в это копирование я бы не коверкал код зря, не для этого Qt придумывали.

pon4ik ★★★★★ ()

при queued connection побьётся ссылка, если emit-ящие потоки/event-loop-ы разные, при direct или blocking queued останется жить

ты можешь емитить просто QByteArray без ссылки, т.к. он copy-on-write, т.е. содержимое QByteArray не будет копироваться (если не изменилось в другом потоке. если удалилось, ничего страшного), скопируется только объект QByteArray.

а, если именно вот надо менять содержимое из потока-слота, то я бы таки юзал или blockingqueued (дождаться, пока поток-слот запишет в массив) или QSharedPointer (более лучше).

luntik2012 ()