Russian Qt Forum
Май 06, 2024, 19:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать критическую секцию?  (Прочитано 4767 раз)
AAXEE
Гость
« : Апрель 15, 2009, 12:11 »

САБЖ. Искал, искал, но не смог найти. Подскажите пожалуйста.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 15, 2009, 12:30 »

Если я правильно понимаю, критическая секция блокирует доступ к фрагменту кода.
в Qt используют QMutex и для удобства можно ещё QMutexLocker
см. список
Записан

Юра.
AAXEE
Гость
« Ответ #2 : Апрель 15, 2009, 13:19 »

Спасибо. Но не очень понятно. Если не трудно, покажите на маленьком примере
Код:
void MyThread::run()
{
//какой-то код

//Здесь нужно начать критическую секцию

//код, использующий глобальные данные

//Здесь критическая секция должна закончиться

//какой-то код

}
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Апрель 15, 2009, 13:39 »

Код:
class MyThread....

private:
    QMutex  mutex;
Код:
void MyThread::run()
{
//какой-то код


{//Здесь нужно начать критическую секцию

QMutexLocker locker(&mutex);

//код, использующий глобальные данные

}//Здесь критическая секция должна закончиться
//какой-то код

}
, т.е. после выхода за область видимости, ограниченную фигурными скобками, объект QMutexLocker разрушится освободив мютекс.
Записан

Юра.
AAXEE
Гость
« Ответ #4 : Апрель 15, 2009, 13:44 »

спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 23.