Автор: <span>admin</span>

Потоки и многопоточность

Таймеры QTimer в многопоточном окружении: подводные камни

Введение QTimer — один из самых часто используемых классов Qt, но его поведение в многопоточном контексте вызывает регулярную путаницу: таймер привязан к event loop конкретного потока, и попытка…

Потоки и многопоточность

Producer-Consumer на QWaitCondition: классический паттерн в Qt-коде

Введение Паттерн «производитель-потребитель» — один из самых распространённых в многопоточном программировании: один или несколько потоков генерируют данные (производители) и помещают их в общую очередь, а другой поток (или…

Потоки и многопоточность

QAtomicInt и lock-free операции в Qt: когда обойтись без мьютексов

Введение Мьютексы и семафоры решают задачу синхронизации универсально, но не бесплатно: захват и освобождение блокировки — это системный вызов (в худшем случае) с накладными расходами и потенциальным переключением…

Заметки по языку с и с++

Потокобезопасные структуры данных в Qt-приложениях: паттерны и ошибки

Введение При переходе от однопоточного кода к многопоточному самая частая ошибка — продолжать использовать обычные контейнеры (QVector, QList, QMap, std::vector) из нескольких потоков без какой-либо синхронизации, считая их…

Потоки и многопоточность

QSemaphore vs QMutex: разница и типичные сценарии использования

Введение QMutex и QSemaphore — два базовых примитива синхронизации в Qt, и начинающие разработчики иногда путают, когда применять каждый из них. Если упростить: мьютекс защищает критическую секцию от…

Потоки и многопоточность

QFuture и QtConcurrent: асинхронные вычисления без ручного управления потоками

Введение Модуль QtConcurrent предоставляет высокоуровневый API для параллельных вычислений, скрывающий детали создания и синхронизации потоков. Вместо явного создания QThread или QRunnable достаточно вызвать функцию вроде QtConcurrent::run(), передав ей…

Потоки и многопоточность

Сигналы и слоты между потоками: Qt::QueuedConnection на практике

Введение Одна из сильных сторон сигнально-слотовой системы Qt — она прозрачно работает между потоками, если объекты-получатели «живут» (имеют affinity) в разных потоках. Это решает классическую проблему многопоточного программирования:…

Cmake

Интеграция Boost в Qt-проект с использованием CMake

Архитектурная Ключевой принцип:никаких глобальных include_directories, только target-based linking. Структура проекта Пример использования Boost внутри Qt Будем использовать: FileService.h FileService.cpp MainWindow.h MainWindow.cpp main.cpp CMakeLists.txt (Qt6 + Boost) Что происходит…

Cmake

CMake и библиотека Boost: интеграция в C++-проект

Введение Boost — одна из наиболее масштабных и зрелых библиотек для C++, предоставляющая компоненты от метапрограммирования и многопоточности до сетевого взаимодействия и сериализации. Многие части Boost легли в…