crossplatform.ru

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

AD
  опции профиля:
сообщение 4.6.2009, 16:49
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Не понимаю, почему нет паузы в выполнении. Делаю так:
connect(btnPauseVertical, SIGNAL(clicked()), this, SLOT(pauseVerticalCycles()));
/// Приостановка выполнения процесса перемещения в вертикальной проекции (или запуск с места остановки)
void AutoControl::pauseVerticalCycles()
{
    if(btnPauseVertical -> isChecked())
    {
        bool p = vertical -> wait();
        int u = 0;
    }
    /*else
        vertical -> start();*/
}

В чем недочеты? Почему не удается приостановить выполнение функции run()?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 5.6.2009, 10:24
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(AD @ 5.6.2009, 11:03) *
2) условие, которое проверяется перед циклом, не выполняется, потому что прожектор и так, в крайнем верхнем положении!
Ну тогда убери строку раз она не нужна. А то этот quit в конце потока, как то глаз немного режет. Не нужет он там. Да и вообще, использование quit внутри run, выглядит как то странно.

Цитата(AD @ 5.6.2009, 11:03) *
1) у меня цикл начинается с места остановки;
Это другой вопрос. Что у тебя там происходит реально, разобраться даже и не пытался. Если все переменные сохраняются, и при новом запуске потока, все выглядит так, как будто ты продолжил с точки остонава, то можешь оставить и так. Это тоже вариант. Но только это не универсальное решение. Будешь решать другую задачу, опять сталкнешся с трудностями. Так что с мьютексами все равно надо разбираться. Тем более, что поток у тебя не безопасный. ИМХО.

Цитата(AD @ 5.6.2009, 11:03) *
Если бы знал, как корректно ими воспользоваться - обязательно бы это сделал!
Попробую небольшой тестовый пример накатать. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 5.6.2009, 10:29
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(igor_bogomolov @ 5.6.2009, 11:24) *
Ну тогда убери строку раз она не нужна. А то этот quit в конце потока, как то глаз немного режет. Не нужет он там. Да и вообще, использование quit внутри run, выглядит как то странно.

Вот то что не пытался разобраться - это плохо! Я даже прокомментировал все действия. что выполняются в этих функциях!
А убрать - не уберу, потому что это условие не выполняется, когда туда заходим после паузы, а при первом заходе, как правило, оно срабатывает. Так и должно быть! А вообще был очень удивлен, что я впринципе могу работать с одной структурой в двух разных потоках. Убедился, что это так - единственное, разные поля этой структуры обрабатываются разными потоками!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Приостановка потока   4.6.2009, 16:49
- - BRE   Цитата(AD @ 4.6.2009, 17:49) Не понимаю, ...   4.6.2009, 17:35
|- - AD   Тогда вопрос: как заставить его таймаутиться? Даж...   4.6.2009, 17:37
|- - BRE   Цитата(AD @ 4.6.2009, 18:37) Тогда вопрос...   4.6.2009, 18:02
|- - AD   Ну.... мне удалось сделать такую фишку! Вот ...   4.6.2009, 19:06
- - igor_bogomolov   AD, мне всегда нравились твои краткие примеры Т...   5.6.2009, 0:52
|- - AD   Цитата(igor_bogomolov @ 5.6.2009, 1:52) Е...   5.6.2009, 10:03
- - Litkevich Yuriy   AD, сворачивай код, слишком длинный   5.6.2009, 10:06
- - igor_bogomolov   Цитата(AD @ 5.6.2009, 11:03) 2) условие, ...   5.6.2009, 10:24
|- - AD   Цитата(igor_bogomolov @ 5.6.2009, 11:24) ...   5.6.2009, 10:29
- - igor_bogomolov   Цитата(AD @ 5.6.2009, 11:29) Вот то что н...   5.6.2009, 11:01
|- - AD   Хорошо, quit() убрал. Цитата(igor_bogomolov ...   5.6.2009, 11:29
- - igor_bogomolov   Вот простенький пример, как приостановить поток пр...   5.6.2009, 13:00
- - flankerr   #include <sys/timeb.h> #include <time....   8.6.2009, 13:12
|- - BRE   Цитата(flankerr @ 8.6.2009, 14:12) просто...   8.6.2009, 13:25
- - flankerr   иногда,в тех случаях когда пауза небольшая и загру...   8.6.2009, 14:14
|- - BRE   Цитата(flankerr @ 8.6.2009, 15:14) иногда...   8.6.2009, 15:02
- - Litkevich Yuriy   тему разделил, см. sleep в main'е Всё таки от ...   8.6.2009, 18:19


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 23.7.2025, 0:45