diff options
author | Matthew Bentham <matthew.bentham@arm.com> | 2022-01-10 13:34:12 +0000 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2022-01-12 20:09:14 +0000 |
commit | 6ae43c40de8cc35af3b3ba401fa6504ff782cd86 (patch) | |
tree | 1aff6d2280752fae0f2b5357be1588c1720df432 /profiling/server/include/timelineDecoder | |
parent | 3ea0107ce9971cea47ac6e318cc9affbd9b6a989 (diff) | |
download | armnn-6ae43c40de8cc35af3b3ba401fa6504ff782cd86.tar.gz |
Fix thread safety issues in TimelineDecoder and associated unit tests
Enforce serialized access to TimelineDecoder::m_Model by removing public
access funtion and replacing with an 'Apply' method taking a lambda and
uses a std::lock.
Use the new lambda when invoking callbacks.
Change-Id: I6ea2fbca990736f3be63e80897f175421f19f0c1
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
Diffstat (limited to 'profiling/server/include/timelineDecoder')
-rw-r--r-- | profiling/server/include/timelineDecoder/TimelineDecoder.hpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/profiling/server/include/timelineDecoder/TimelineDecoder.hpp b/profiling/server/include/timelineDecoder/TimelineDecoder.hpp index ea4b144860..9776ec91f9 100644 --- a/profiling/server/include/timelineDecoder/TimelineDecoder.hpp +++ b/profiling/server/include/timelineDecoder/TimelineDecoder.hpp @@ -6,6 +6,8 @@ #include "ITimelineDecoder.hpp" +#include <mutex> +#include <utility> #include <vector> namespace arm @@ -40,7 +42,11 @@ public: virtual TimelineStatus CreateLabel(const Label &) override; virtual TimelineStatus CreateRelationship(const Relationship &) override; - const Model& GetModel(); + template<class F> + decltype(auto) ApplyToModel(F&& f){ + std::lock_guard<std::mutex> lock(m_ModelMutex); + return f(m_Model); + } TimelineStatus SetEntityCallback(const OnNewEntityCallback); TimelineStatus SetEventClassCallback(const OnNewEventClassCallback); @@ -54,6 +60,7 @@ public: private: Model m_Model; + std::mutex m_ModelMutex; OnNewEntityCallback m_OnNewEntityCallback; OnNewEventClassCallback m_OnNewEventClassCallback; @@ -69,4 +76,4 @@ private: }; } // namespace pipe -} // namespace arm
\ No newline at end of file +} // namespace arm |