Re[2]: Про QObject::deleteLater()
От: m2user  
Дата: 09.10.25 09:28
Оценка:
QC>delete — это стандартный оператор C++. Его можно безопасно использовать, только если вы абсолютно уверены, что объект в данный момент не используется и не находится в середине обработки события.

Чисто технически QObject может быть реализован так, что в обработчик события передается копия (shallow copy) со счётчиком ссылок.
На мой взгляд более естественный подход, чем QObject::deleteLater.

QC>Если объект "живет" в потоке A, а вы находитесь в потоке B, вы не можете удалить его с помощью delete. Это почти гарантированно приведет к крешу, потому что поток A может в этот момент обрабатывать событие для этого объекта.

QC>deleteLater() поставит задачу на удаление в цикл событий того потока, в котором "живет" объект, что является потокобезопасным.

Т.е. из потока A вызывать delete можно? Но ведь, если объект выступает в роли sender`а (emitter`а), то он в этот момент может быть задействован из потока, в котором живет receiver.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.