Можно ли использовать примитивы синхронизации Qt с потоками, не относящимися к QThread?

Я хочу использовать, скажем, QSemaphore с потоками повышения или C ++ 11 потоков. Это разрешено?

1

Решение

Я работаю на pqConsole, где многопоточность играет важную роль.

Запуск консоли для SWI-Prolog (многопоточный, реализованный в C), графический интерфейс Qt управляет вводом-выводом от имени пользовательских программ, выполняя в фоновом режиме QThread, где используется интерфейс на иностранном языке.

Потоки также могут быть инициированы со стороны C, и они получают выделенную консоль (см. Interactor/ 0), где IO снова отображается в графическом интерфейсе Qt.

Я использую QMutex и QMutexLocker для синхронизации (то есть, более простые конструкции), и AFAIK, которые работают как положено.

2

Другие решения

Теоретически, да, вы можете.

Обратите внимание, вы также можете просто использовать расширенный семафор, доступный в этом сценарии. Кроме того, в настоящее время QSemaphore использует не интерфейс pthread, а какое-то нестандартное решение. Были обсуждения по рефакторингу, чтобы позже использовать функции pthread.

0

По вопросам рекламы [email protected]