threads в классах Qt |
Здравствуйте, гость ( Вход | Регистрация )
threads в классах Qt |
Digger86 |
18.10.2012, 17:46
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 27.6.2012 Пользователь №: 3436 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день!
Существует ли возможность того, что Qt сам создаёт какие-то нити, при использовании его классов? Т.е. есть ли гарантия того, что Qt классы (кроме QThread разумеется) не создают каких-либо нитей? А если всё-таки какие-то создают, то какие именно и где об этом можно почитать. Спасибо! |
|
|
RazrFalcon |
18.10.2012, 19:02
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
Digger86 |
18.10.2012, 19:40
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 27.6.2012 Пользователь №: 3436 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо!
В общем я так и думал. |
|
|
Алексей1153 |
19.10.2012, 7:16
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Digger86, а почему такой вопрос возник ?
|
|
|
Digger86 |
19.10.2012, 10:13
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 27.6.2012 Пользователь №: 3436 Спасибо сказали: 0 раз(а) Репутация: 0 |
Потому что при использовании моей библиотеки, которая использует классы Qt, возникают 2 дополнительных процесса (видны в менеджере процессов). Как выяснилось они появляются после использования функции bool QProcess::startDetached(). Не совсем ясно как сделать так чтобы они не появлялись. Мне просто необходимо запустить программу, без всякой дальнейшей связи с ней.
|
|
|
Алексей1153 |
19.10.2012, 10:40
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Digger86, давай уже определимся, речь про процессы или про потоки ?
И код покажи, что ты делаешь для того, чтобы Цитата необходимо запустить программу, без всякой дальнейшей связи с ней. И что должно стать с родительским процессом после запуска дочернего ? |
|
|
Digger86 |
19.10.2012, 10:58
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 27.6.2012 Пользователь №: 3436 Спасибо сказали: 0 раз(а) Репутация: 0 |
чтобы запустить программу я делаю следующее
QString program("/bin/myProgram"); QStringList arguments <<"my" <<"arguments"; QProcess::startDetached(program, arguments); После этого у меня стартует myProgram, но при этом в вызывающем процессе образуются дополнительные потоки. Родительский процесс после вызова QProcess::startDetached(program, arguments) должен продолжить своё выполнение, как-будто ничего не произошло. |
|
|
Алексей1153 |
19.10.2012, 11:49
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
может быть, всё дело в том, что startDetached вертает дескриптор нового процесса - и что-то там требуется для этого . Попробуй вариант start()
|
|
|
Digger86 |
19.10.2012, 14:02
Сообщение
#9
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 27.6.2012 Пользователь №: 3436 Спасибо сказали: 0 раз(а) Репутация: 0 |
К сожалению через, если использовать start(), то тоже создаются дополнительные потоки (я так понимаю их создаёт QProcessManager, который следит за дочерними процессами). Проблем добавляет тот факт, что моя библиотека должна использоваться вне Qt окружения.. То есть нет гарантии того, что имеется QCoreApplication.
В итоге реализовал запуск программы следующим образом:
взял отсюда: http://stackoverflow.com/questions/486087/...with-parameters Конечно это не кроссплатформенное решение, но хотя бы работает.. |
|
|
Текстовая версия | Сейчас: 5.12.2024, 2:43 |