Реализуйте критический раздел в Qt - PullRequest
2 голосов
/ 14 апреля 2011


Мне нужно реализовать критический раздел в Qt (4.7.3, Windows XP).

Например, публичный слот:

void MyClass::myPublicSlot(...local params...)<br> { </p> <blockquote> <p>...<br> block of code working with global params;<br> ... </p> </blockquote> <p>}

Функция void myPublicSlot запускается по таймеру.
Выполнение этой функции может занять много времени, иногда больше, чем время таймера (или, например, нажатие кнопки).
Нужно заблокировать block of code working with global params.
Вызов функции может быть как многопоточным, так и однопоточным.

P.S. Я попытался использовать QMutex и QMutexLocker, но его причина вызывает тупик в однопоточном случае.

1 Ответ

4 голосов
/ 14 апреля 2011

QMutex - это то, что вы хотите. Возможно, вы используете его рекурсивно, но не создаете рекурсивный мьютекс? Это единственное объяснение тупика в однопоточном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...