diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-02 13:36:44 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-02 13:50:46 +0300 |
commit | ed935ae5adf8d676bb002380d4f46a288c6572d0 (patch) | |
tree | 3621f6bd3988144d46d0f3d00459fbc50305d5c6 /intern/cycles/util/util_stats.h | |
parent | e177c5143055306d4b128663d537568bd1256645 (diff) |
Cycles: Use lock in the memory statistics
CPU rendering is allowed to allocate memory from multiple threads,
which means statistics need to be avare of this.
Diffstat (limited to 'intern/cycles/util/util_stats.h')
-rw-r--r-- | intern/cycles/util/util_stats.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/intern/cycles/util/util_stats.h b/intern/cycles/util/util_stats.h index 8758b823084..fe6c162366e 100644 --- a/intern/cycles/util/util_stats.h +++ b/intern/cycles/util/util_stats.h @@ -17,6 +17,8 @@ #ifndef __UTIL_STATS_H__ #define __UTIL_STATS_H__ +#include "util_atomic.h" + CCL_NAMESPACE_BEGIN class Stats { @@ -24,14 +26,13 @@ public: Stats() : mem_used(0), mem_peak(0) {} void mem_alloc(size_t size) { - mem_used += size; - if(mem_used > mem_peak) - mem_peak = mem_used; + atomic_add_z(&mem_used, size); + atomic_update_max_z(&mem_peak, mem_used); } void mem_free(size_t size) { assert(mem_used >= size); - mem_used -= size; + atomic_sub_z(&mem_used, size); } size_t mem_used; |