[lamer mode] Глупые вопросы по потокам.
Если он выполняет что-то в цикле, то пусть заодно проверяет, не завершился ли подчинённый поток, и выполняет g, если тот завершился.
Под виндой вопрос решается отправкой сообщения в основной поток (предполагается что он в основном занят циклом обработки сообщений).
Основной поток - Qtшный Гуй интерфейс. И он действительно занят циклом обработки сообщений от пользователя.
Пробовал всякие сигналы в конце ф-ции f, но они вызывают g в том же потоке.
Желатеьно конечно дописать в конце ф-ции f нечто что послало бы сообщение в основной поток и вызвало ф-цию g. Так как лезть в цикл обработки не особо хочется. Но если уж придется как узнать кончился ли поражденный поток?
Пробовал всякие сигналы в конце ф-ции f, но они вызывают g в том же потоке.Если я правильно помню, у каждого QObject есть «свой» тред, в котором он и будет обрабатывать сигналы. Если послать сигнал QObject'у, принадлежащему другому треду, то сигнал там и будет обработан.
При этом, конечно, тип соединения должен быть queued или auto.
Вообще, вот: http://doc.trolltech.com/4.2/threads.html#signals-and-slots-...
Оставить комментарий
capxaH
Пусть есть класси есть некая ф-ция (запускается при нажатии на кнопку например) из основного потока
или даже такая
или даже они могут являться членами класса A.
А вопрос собственно такой, как по завершении потока запустить ф-цию g класса A, но уже из основного потока?
Или даже как завершении потока запустить какую-либо ф-цию из основного потока?
Такой вариант
не устраивает так как тогда будет "заморожен" основной поток.