Я хочу использовать, скажем, QSemaphore
с потоками повышения или C ++ 11 потоков. Это разрешено?
Я работаю на pqConsole, где многопоточность играет важную роль.
Запуск консоли для SWI-Prolog (многопоточный, реализованный в C), графический интерфейс Qt управляет вводом-выводом от имени пользовательских программ, выполняя в фоновом режиме QThread, где используется интерфейс на иностранном языке.
Потоки также могут быть инициированы со стороны C, и они получают выделенную консоль (см. Interactor/ 0), где IO снова отображается в графическом интерфейсе Qt.
Я использую QMutex и QMutexLocker для синхронизации (то есть, более простые конструкции), и AFAIK, которые работают как положено.
Теоретически, да, вы можете.
Обратите внимание, вы также можете просто использовать расширенный семафор, доступный в этом сценарии. Кроме того, в настоящее время QSemaphore использует не интерфейс pthread, а какое-то нестандартное решение. Были обсуждения по рефакторингу, чтобы позже использовать функции pthread.