CCriticalSection

Об'єкт клас CCriticalSection представляє "критичної секції" — синхронізації об'єктів, що дозволяє один потік в той час отримати доступ до розділу коду або ресурс. Критичної секції, корисні, коли тільки один потік в той час, може бути дозволено змінювати дані або іншими контрольованих ресурсів. Наприклад, додавання вузли до зв'язаного списку є процес, який повинен бути вирішена тільки на один потік в той час. За допомогою CCriticalSection об'єкта керування зв'язаного списку, лише один потік в той час, можна отримати доступ до списку.

Критичні розділи використовуються замість того, щоб mutexes, коли швидкість є критичною і ресурс не буде використовуватися через процес межі. Щоб отримати додаткові відомості про використання mutexes у MFC перегляньте CMutex.

Використовувати CCriticalSection об'єкт, побудувати об'єкт CCriticalSection , коли це необхідно. Ви може мати доступ до критичної секції коли Конструктор повертається. Телефонуйте розблокувати після завершення звернення до критичної секції.

Для доступу до ресурсу під контролем CCriticalSection об'єкт в таким чином, по-перше, створення змінної типу CSingleLock у ваш ресурс доступ до член функції. Потім викликати функцію член Блокування блокування об'єкта (наприклад, CSingleLock::Lock). На даний момент ваш потік буде або отримати доступ до ресурсу, чекати ресурс, щоб бути звільнені і отримати доступ або чекати ресурс буде випущений і тайм-аут, не вдається отримати доступ до ресурсу. У будь-якому випадку, ваш ресурс переглядали потік безпечним чином. Звільнити ресурс, використовується функція блокування об'єкта розблокувати членів (наприклад, CSingleLock::Unlock) або дозволити блокування об'єкта падати з сфера.

Крім того, можна створити об'єкт CCriticalSection автономний і явно доступ перед спробою доступу до контрольованих ресурсів. Цей метод, при більш чіткої для кого-то читав ваш вихідний код, є більш схильні до помилок, як ви повинні пам'ятати, для блокування та розблокування критичної секції, до і після доступу.

Щоб отримати додаткові відомості про використання CCriticalSection об'єкти, перегляньте статтю Multithreading: використання синхронізації класи в Visual C++ програміста керівництво.

# включити lt;afxmt.h>

|&Nbsp членів класу ; Базовий клас | Ієрархічна діаграма

Зразок  MFC зразок MTGDI

Дивіться також CMutex

Index