QMutexLocker locker(&lock);if (**){ i++;//если бы был просто мутекс, ты бы должен был вызвать тут unlock() - 1 раз return;}if (***){ j++;//если бы был просто мутекс, ты бы должен был вызвать тут unlock() - 2 раз return;}if(****){ x++;//если бы был просто мутекс, ты бы должен был вызвать тут unlock() - 3 раза return;}//если бы был просто мутекс, ты бы должен был вызвать тут unlock() - 4 разаreturn;
void send{QMutexLock h(&mutex);// создаётся мутекс локер и автоматически выполняет ф-цию mutex.lock()//тут выполняется программа.}// а вот тут уничтожаются локальные объекты. QMutexLock вызывает деструктор, в котором вызывается ф-ция mutex.unlock()
C++ (Qt)void run(){ while(true) { QMutexlocker locker(&mutex) //заблокировали buffer = "xz"; // выполняем чото критичное //выполнили а теперь хочу разблокироть и как быть, locker уничтожится только по окончанию цикла, а цикл никогда не кончится, значит не разблокируемся, что делать? }}
C++ (Qt)void run(){ while(true) { { QMutexlocker locker(&mutex) //заблокировали // выполняем чото критичное } //а теперь хочу разблокироть и как быть, locker уничтожится только по окончанию цикла, а цикл никогда не кончится, значит не разблокируемся, что делать? }
C++ (Qt)void run(){ while(true) { QMutexlocker locker(&mutex) buffer = "xz"; }}
C++ (Qt)void run(){ QMutexlocker locker(&mutex) // заблокировали buffer = "xz"; //здесь нужно разблокировать //какой-то другой код }
C++ (Qt)void run(){ if (1) { QMutexlocker locker(&mutex) // заблокировали buffer = "xz"; } ... // мутекс разблокирован}}