1.Что произойдет, если я продолжу использовать someFunct()
даже после того, как издаю over()
из someFunct()
?Это неопределенное поведение или нормальное?
Поскольку вы используете прямые соединения, излучение over
вызовет непосредственно функцию quit
, , которая останавливает цикл обработки событий и возвращается из exec вметод запуска потока. Это означает, что someFunct()
не завершит свое выполнение, и объекты внутри него либо потеряны, либо находятся в частично измененном состоянии.
2.С каким потоком теперь будет связан объект (в то время как остальная часть кода после выполнения over () все еще выполняется в someFunct)?
Как уже говорилось ранее somefunct
не завершит свое выполнение.Но я считаю, что любые объекты, связанные с этим потоком, останутся таковыми.Я говорю, что верю, потому что нигде нет твердого утверждения, но оно имеет смысл больше всего. Как уже упоминалось в документе , для того, чтобы эти объекты отправляли или получали события, поток должен быть снова запущен ....
3.После того, как слот quit () для th выполнен, можно ли предположить, что поток действительно завершился, или я должен дополнительно подключить сигнал Finish () th к некоторому слоту, чтобы быть абсолютно уверенным?1028 * завершает цикл обработки событий и возвращает туда, где был вызван exec()
.
Обратите внимание, что объект Qthread не является потоком.так что пока вы не введете exec()
, это основной поток, который работает ... Как и основной поток, который запускается после exec
.
В любом случае, это несколько замечательных вопросов ...