Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Why log records are weakly ordered in a multithreaded application?

Boost , Chapter 1. Boost.Log v2 , Rationale and FAQ

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Хотя библиотека гарантирует, что записи журнала, сделанные в данной нити, всегда доставляются в раковины в том же порядке, в котором они были сделаны, библиотека не может предоставить такую гарантию для разных потоков. Например, возможно, что нить A испускает запись журнала и становится упреждаемой, затем нить B испускает свою запись журнала и успевает доставить ее в раковину перед упреждением. Полученный журнал будет содержать запись журнала из нити B перед записью, сделанной в нити A. Однако значения атрибутов, прикрепленные к записям, всегда будут актуальными в отношении момента выпуска записи, а не момента передачи записи в раковину. Это является причиной странной, на первый взгляд, ситуации, когда запись журнала с более ранней отметкой времени следует за записью с более поздней отметкой времени. Проблема появляется довольно редко, как правило, когда содержание ниток на вырубке очень велико.

Существует несколько возможных способов справиться с проблемой:

  • Обеспечить строгую сериализацию записи журнала, которая производится на протяжении всей заявки. Это решение подразумевает серьезное влияние на производительность в многопоточных приложениях, потому что записи журналов, которые в противном случае могли бы обрабатываться одновременно, должны были бы идти последовательно. Поскольку это противоречит одной из главных целей библиотеки, она была отклонена.
  • Постарайтесь вести регистрационный учет на уровне раковины. Это решение более или менее жизнеспособно. С другой стороны, это приведет к буферизации записи журнала, что, в свою очередь, поставит под угрозу надежность журналов. В случае сбоя приложения все буферизированные записи будут потеряны.
  • Будьте осторожны с проблемой и позволяйте некорректным записям время от времени появляться в файлах журналов. Закажите регистрационные записи при чтении файлов, если это необходимо.

Второе решение было реализовано как специальная политика дляасинхронной раковины фронтенда.


PrevUpHomeNext

Статья Why log records are weakly ordered in a multithreaded application? раздела Chapter 1. Boost.Log v2 Rationale and FAQ может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Rationale and FAQ ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:34:01/0.027919054031372/1