VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
tracyLocks.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "vrfutil/profiler.h"
5 
6 
7 const char DtScopedLockDefaultName[] = "DtTracyScopedLock_waiting";
11 template<typename T_Mutex, char const* T_LockName = DtScopedLockDefaultName>
13 {
14 public:
15  DtTracyScopedLock(T_Mutex& m)
16  : lock()
17  {
18  if (!lock.try_acquire(m))
19  {
21  lock.acquire(m);
22  }
23  };
24 
25  void release()
26  {
27  lock.release();
28  }
29 
30 protected:
31  typename T_Mutex::scoped_lock lock;
32 };
33 
34 
35 const char DtScopedRwLockDefaultName[] = "DtTracyScopedRwLock_waiting";
39 template<typename T_Mutex, char const* T_LockName = DtScopedRwLockDefaultName>
41 {
42 public:
43  DtTracyScopedRwLock(T_Mutex& m, bool writeLock)
44  : lock()
45  {
46  acquire(m, writeLock);
47  };
48 
49  void acquire(T_Mutex& m, bool writeLock = true)
50  {
51  if (!lock.try_acquire(m, writeLock))
52  {
53  DtPROFILEC(T_LockName, tracy::Color::Red);
54  lock.acquire(m, writeLock);
55  }
56  }
57 
59  {
60  DtPROFILEC(T_LockName, tracy::Color::Red);
61  return lock.upgrade_to_writer();
62  }
63 
64  void release()
65  {
66  lock.release();
67  }
68 
70  {
71  return lock.downgrade_to_reader();
72  }
73 
74 protected:
75  typename T_Mutex::scoped_lock lock;
76 };
const char DtScopedLockDefaultName[]
Definition: tracyLocks.h:7
DtTracyScopedLock(T_Mutex &m)
Definition: tracyLocks.h:15
DtTracyScopedRwLock(T_Mutex &m, bool writeLock)
Definition: tracyLocks.h:43
Template around a TBB RW Mutex lock which adds a tracy marker when the lock is waiting on the mutex...
Definition: tracyLocks.h:40
void release()
Definition: tracyLocks.h:25
void acquire(T_Mutex &m, bool writeLock=true)
Definition: tracyLocks.h:49
Template around a TBB Mutex lock which adds a tracy marker when the lock is waiting on the mutex...
Definition: tracyLocks.h:12
bool downgrade_to_reader()
Definition: tracyLocks.h:69
T_Mutex::scoped_lock lock
Definition: tracyLocks.h:75
const char DtScopedRwLockDefaultName[]
Definition: tracyLocks.h:35
void release()
Definition: tracyLocks.h:64
Definition: vrfProfileColors.h:23
T_Mutex::scoped_lock lock
Definition: tracyLocks.h:31
bool upgrade_to_writer()
Definition: tracyLocks.h:58
#define DtPROFILEC(name, color)
Definition: profiler.h:78

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)