C++ (Qt)qDebug() << QThread::currentThreadId();
C++ (Qt){ m.lock(); ... if( условие ) { return; // Мутекс m останется залоченным. С QMutexLocker такое не возможно. } m.unlock();}
C++ (Qt)for (int i = 0; i < 2; ++i) theSemaphore.acquire();// полагаем что др. нитки сделают theSemaphore.release
C++ (Qt)while (true) { if (plugin1Ready && plugin2Ready) break; QThread::yieldCirrentThread(); QApplication::processEvents();}
enum intit{ notInit = 0, firstPlugOk = 1, secondPlugOk = 2, bothPlugOk = firstPlugOk | secondPlugOk}...intit initOk = notInit;...while(initOk == bothPlugOk ){ // например, processEvent}...if (!startInitPlug1()) // нет плагина{ firstInitFinished(); parm = defVal;}....void firstInitFinished(){ intit = intit |firstPlugOk;}