Архив рубрики: Процессы и потоки в Qt

Работа Qt с потоками

QWaitCondition

QWaitCondition позволяет потоку сообщать другим потокам о выполнение каких-либо условий. Один или несколько потоков могут блокировать ожидание QWaitCondition для установки условия с помощью wakeOne() или wakeAll(). Рассмотрим небольшой пример который позволяет увидеть механизм ожидания. В данном примере происходит запуск потока и установка его в ожидание. При нажатии на клавишу происходит снятия ожидания в дальнейшего его… Читать далее »

QMutex

Основной задачей является защита объекта или части кода доступа только для одного потока при выполнении. При обращении к защищенному коду поток ожидает завершение блокировки и переходит к выполнению, когда объект завершит свое выполнение и снимет блокировку. Такая возможность позволяет сохранять правильное последовательность выполнение поставленной задачи. Из основных методов можно выделить несколько функции которые позволяют блокировать … Читать далее »

Приоритет выполнения QThread

При запуске QThread методом start() можно указать приоритет его выполнение. Приоритет определяет приоритетность выполнения потока по отношению к другим потокам. Каждый приоритет сопоставим с числом и начинается от 0 до 7. Приоритеты QThread Рассмотрим все варианты начиная от 0 и заканчивая 7: QThread :: IdlePriority 0 Запланирован, только когда другие потоки не запущены QThread ::… Читать далее »

QProcess

Класс QProcess используется для запуска внешних программ и связи с ними. Чтобы запустить процесс, передайте аргументы name и command line программы, которую запускаете, в качестве аргументов start(). Аргументы предоставляются в виде отдельных строк в QStringList. Пример использования QProcess QProcess переходит в состояние «Запуск», и когда программа запускается, QProcess переходит в состояние «Выполнение». QProcess позволяет обрабатывать… Читать далее »

QThread

Потоки в операционной системе являются основной реализующей длительных операций. Для предотвращения зависания интерфейса или основного рабочего процесса стоит использовать потоки. В поток нельзя выносить работу основного интерфейса, следует выносить только основную задачу, которая требует длительного времени для выполнения.  Поток выполняется как независимая задача внутри запущенного процесса и разделяет общее адресное пространство вместе с глобальными данными.… Читать далее »