Критическая секция, ее применение в нашем проекте 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Критическая секция, ее применение в нашем проекте

Поиск

Критическая секция, ее применение в нашем проекте

 

Критической секцией называется участок кода, в котором поток получает «монопольный» доступ к разделяемому ресурсу, доступному и другим потокам(обычно это участок памяти, относящийся к глобальной переменной).

MFC предоставляет класс CCriticalSection, инкапсулирующий этот механизм Win32.

· Конструкторэтого классаподготавливает запуск механизма синхронизации.

CCriticalSection::CCriticalSection( )

· Метод

BOOL CCriticalSection::Lock( )

запрашивает разрешение на вход в критическую секцию: если другой поток находится в своем критическом участке кода, то поток, вызвавший Lock, блокируется, пока тот не покинет критический участок (возвращает TRUE в случае успешной операции):

· Метод

virtual BOOL CCriticalSection::Unlock ( )

уведомляет систему о выходе потока из критического участка(поэтому должен вызываться сразу после окончания работы с ресурсом в данном потоке). Возвращает значение TRUE, если объект CCriticalSection до сих пор принадлежал данному потоку и освобождение прошло успешно.

· Деструктор освобождает системный ресурс, отвечающий за данный критический участок.

 

При входе какого-либо потока в критическую секцию, все потоки, не требующие в данный момент входа в критическую секцию, продолжают нормально выполняться.

 

В нашем приложении данный класс поможет сделать более содержательной работу с переменной g_dfpp: если рабочий поток будет записывать туда значение целевой функции в режиме CriticalSection, то основной поток сможет отображать эти значения в процессе вычислений. Без дополнительных предосторожностей такой обмен данными делать нельзя, т.к., если во время чтения вещественной переменной произойдет модификация одного из байт, кодирующих ее, то прочитанное значение, скорее всего, будет некорректным.

 

Чтобы воспользоваться этим средством вставим вначале функции, содержащей главный цикл решателя, конструктор



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 55; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.008 с.)