Я новичок в Boost и перерабатываю класс ведения журнала, который должен работать в многопоточном приложении. Он был разработан, чтобы работать как объект ostream, но «не работал» (Сказал голос Эдди Иззарда для тех из вас, кто знает о его упоминании о вертолете Давинчи).
Вы можете использовать его следующим образом:
Logger &logger = Logger::instance();
logger << "He designed a helicopter you know...that did not work." << endl;
Так что изначально он был разработан как одноэлементный, и после нескольких подходов я подумал, что, возможно, Logger :: instance () может вернуть Logger, уникальный для потока. Я мог бы использовать STL для определения карты между идентификатором Boost Thread и экземпляром класса Logger.
Тогда я начал думать, что, возможно, мог бы быть более разумный способ сделать это, используя некоторую форму локального хранилища потока?
Одна проблема с картой состоит в том, что я должен сделать уборку дома, чтобы периодически удалять регистраторы, когда потоки были прерваны. Я начал чувствовать, что я заново изобретал вещи.
Я вижу, что Boost поддерживает локальное хранилище потоков.
Есть мысли или предостережения?
Спасибо
Кенни