para one kav60 instalar e14 d257 controladores como camara aspire acer 5733z c++ qt synchronization

c++ - kav60 - driver camara acer aspire one windows 7



¿Cómo implementar un bloqueo de cuenta atrás en Qt? (1)

Aquí hay una implementación que aprovecha QSemaphore :

// https://github.com/KubaO/stackoverflown/tree/master/questions/countdown-latch-38362044 #include <climits> #include <QSemaphore> class CountDownLatch { Q_DISABLE_COPY(CountDownLatch) QSemaphore m_sem{INT_MAX}; public: CountDownLatch() {} ~CountDownLatch() { m_sem.acquire(INT_MAX); m_sem.release(INT_MAX); } class Locker { CountDownLatch * sem; public: Locker(const Locker & other) : sem{other.sem} { sem->m_sem.acquire(); } Locker(Locker && other) : sem{other.sem} { other.sem = nullptr; } Locker(CountDownLatch * sem) : sem{sem} { sem->m_sem.acquire(); } ~Locker() { if (sem) sem->m_sem.release(); } }; Locker lock() { return Locker{this}; } };

Para usar, mantenga una instancia de CountdownLatch::Locker mientras desea que el bloqueo permanezca bloqueado. El destructor del pestillo se bloqueará hasta que se destruyan todos los casilleros.

#include <QtConcurrent> struct MyClass { CountDownLatch m_latch; MyClass() { auto lock = m_latch.lock(); // must be taken here QtConcurrent::run([this, lock]{ // DON''T lock here, you''ll have a race! QThread::sleep(10); }); } }; int main() { MyClass a; }

La instancia a se mantendrá hasta que el trabajador concurrente finalice, es decir, durante 10 segundos.

Un pestillo de cuenta regresiva (también conocido como CountDownLatch ) es una primitiva de sincronización que asegura que todos los recursos utilizados se liberan antes de que se destruya la primitiva. Es como un QSemaphore , pero funciona al revés: queremos bloquear no para adquirir un recurso, sino para garantizar que todos ellos hayan sido liberados.

¿Cuál sería una forma fácil de implementarlo en Qt?