crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику MishaUA ::: Спасибо сказали: 13 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
27.5.2018, 15:05 QMutex. Принудительная блокировка для ожидания команды
Здравствуйте!
Есть 2 потока. Первый Занимается обработкой данных, а второй дает команду на запуск, выглядит примерно вот так:
QMutex m;
// Поток 1:
while(1) {
m.unlock();
// блокируем поток, его должен разбудить другой поток, если не разбудит, то он проснется сам по истечению 5с.
m.lock();
m.tryLock(5000);
// выполняем действия
}

// Поток 2:
void func() {
m.unlock();
}

Правильный ли данный подход? Просто у меня почему-то в m.tryLock(5000) замирает и по истечению 5с не просыпается.
97WzugSKd31, 9or6UxhWRa1, DaLgAMYeVr1, gHzcXItj3a1, hxr3Wawd9g1,
30.3.2018, 11:17 Android. Процесс, запущенный в отдельном потоке, завершается через время если приложение свернуть
Нашел у QApplication опцию setQuitOnLastWindowClosed, которой можно отключить выход с приложения по закрытию главного окна.


блин, не помогло, приложение все равно закрывается через время(((
gHzcXItj3a1,
30.3.2018, 10:12 Android. Процесс, запущенный в отдельном потоке, завершается через время если приложение свернуть
эм, то есть, нужно выполнить a.exec(), после этого ждать пока не завершиться поток и только потом выполнять return?

к стати, а как тогда отреагировать на разворачивание приложения?
gHzcXItj3a1,
30.3.2018, 0:48 Android. Процесс, запущенный в отдельном потоке, завершается через время если приложение свернуть
Доброго времени суток!
Делаю простенькое приложение под андроид, вот часть кода:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainThread  thr;

    MainWindow w;
    w.show();

    return a.exec();
}

Т.е., запускается отдельный потом и главное окно (да, нужен QML, но это просто для тестов). Если приложение свернуть, то MainWindow, как бы, замирает(вроде так и должно быть), а MainThread нормально выполняется (принимает данные по сети и отправляет), но через какое-то время (несколько минут) он перестает отвечать. Получается, процесс был завершен, ну или вообще прога завершилась.
Как можно сделать так, чтобы приложение/процесс не завершались?
Спасибо!
97WzugSKd31, 9or6UxhWRa1, DaLgAMYeVr1, gHzcXItj3a1, hxr3Wawd9g1,
3.2.2014, 12:20 Переход на 64 бит thrush007,

RSS Текстовая версия Сейчас: 22.11.2024, 7:01