Вот пример из нашего кода, имеется некий объект -- хранилище статистики по работе класса --плюс защищающий его мьютекс:
class IvOverlay { Platform::Mutex m_mutexStat; OverlayStat m_stat; // ... void Render() { // ... { Platform::MutexLocker _(m_mutexStat); m_stat.AddRenderTime( tProf.Get() ); } } // ... void PutMsg(const Cmd& cmd, int sz = 0) { // ... { Platform::MutexLocker _(m_mutexStat); m_stat.PushFrameToQueue(); } } };
В задаче спрашивается -- как все это дело написать изящнее, желательно еще и так, чтобы случайно где-то не полезть к объекту напрямую без защиты.
Варианты а) встроить мьютекс в сам объект статистики и б) передавать в некий защищенный мьютексом метод функтор с желаемым действием -- не предлагать.
Идеи?
No comments:
Post a Comment