Павел Блудов
Критические секции -- это объекты, используемые для блокировки доступа всех нитей (threads) приложения, кроме одной, к некоторым важным данным в один момент времени. Например, имеется переменная m_pObject и несколько нитей, вызывающих методы объекта, на который ссылается m_pObject, причем эта переменная может изменять свое значение время от времени. Иногда там даже оказывается нуль. Предположим, имеется вот такой код:
// Нить №1
void Proc1()
{
if (m_pObject)
m_pObject->SomeMethod();
}
// Нить №2
void Proc2(IObject *pNewObject)
delete m_pObject;
m_pObject = pNewobject;