Главная  /  Правка  /  История  /   /  Область пользователей

Потокобезопасность

Эмпирическое правило

Все классы не являются потокобезопасными для одновременного доступа из нескольких потоков, если иное явно не указано.

В целом, есть несколько потокобезопасными классов в CppCMS, к методам которых возможен одновременный доступ из нескольких потоков:

Во всех остальных случаях следует принимать особые меры в целях предотвращения доступа к одному и тому же классу из нескольких потоков.

Потоки в CppCMS

Есть несколько типов потоков в CppCMS:

Взаимодействие между потоками

Сразу после запуска CppCMS-сервиса все синхронные приложения начинают выполняться в потоковом пуле.

Если синхронное приложение CppCMS хочет выполнить какую-либо операцию в цикле обработки событий, например, взаимодействовать с некоторым асинхронным приложением передачей каких-нибудь данных или передачей ему своего HTTP-контекста, оно должно сделать это с помощью метода cppcms::service::post() и соответствующего обработчика исполнения.

Этот обработчик будет передан в очередь цикла обработки событий и выполнен в его потоке.

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

Обратите внимание, что как только работа будет завершена, обработчик должен уведомить о своем завершении, "отпостив" какой-либо обработчик в цикл обработки событий так же, как описано выше.

Различные приложения никогда не должны получать доступ к своим внутренним состояниям непосредственно, т.к. это небезопасно.

Проект

CppCMS является основой веб-разработки для выполнения ресурсоемких приложений.

Размещение

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Навигация

Главная страница



Валидация CSS | Валидация XHTML 1.0