mirror of
https://github.com/wolfpld/tracy
synced 2025-05-02 13:43:52 +00:00
Don't wait for lock to be announced before processing events.
This commit is contained in:
parent
695b0426bf
commit
cbf5ddece1
@ -485,22 +485,8 @@ void View::ProcessZoneName( const QueueZoneName& ev )
|
||||
void View::ProcessLockAnnounce( const QueueLockAnnounce& ev )
|
||||
{
|
||||
CheckSourceLocation( ev.srcloc );
|
||||
|
||||
assert( m_lockMap.find( ev.id ) == m_lockMap.end() );
|
||||
auto it = m_pendingLocks.find( ev.id );
|
||||
|
||||
std::unique_lock<std::mutex> lock( m_lock );
|
||||
auto& lockmap = m_lockMap.emplace( ev.id, LockMap { ev.srcloc } ).first->second;
|
||||
|
||||
if( it != m_pendingLocks.end() )
|
||||
{
|
||||
for( auto& v : it->second )
|
||||
{
|
||||
InsertLockEvent( lockmap, v );
|
||||
}
|
||||
lock.unlock();
|
||||
m_pendingLocks.erase( it );
|
||||
}
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
m_lockMap[ev.id].srcloc = ev.srcloc;
|
||||
}
|
||||
|
||||
void View::ProcessLockWait( const QueueLockWait& ev )
|
||||
@ -510,17 +496,8 @@ void View::ProcessLockWait( const QueueLockWait& ev )
|
||||
lev->thread = ev.thread;
|
||||
lev->type = LockEvent::Type::Wait;
|
||||
|
||||
auto it = m_lockMap.find( ev.id );
|
||||
if( it == m_lockMap.end() )
|
||||
{
|
||||
auto& v = m_pendingLocks[ev.id];
|
||||
v.push_back( lev );
|
||||
}
|
||||
else
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( it->second, lev );
|
||||
}
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( m_lockMap[ev.id], lev );
|
||||
}
|
||||
|
||||
void View::ProcessLockObtain( const QueueLockObtain& ev )
|
||||
@ -530,17 +507,8 @@ void View::ProcessLockObtain( const QueueLockObtain& ev )
|
||||
lev->thread = ev.thread;
|
||||
lev->type = LockEvent::Type::Obtain;
|
||||
|
||||
auto it = m_lockMap.find( ev.id );
|
||||
if( it == m_lockMap.end() )
|
||||
{
|
||||
auto& v = m_pendingLocks[ev.id];
|
||||
v.push_back( lev );
|
||||
}
|
||||
else
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( it->second, lev );
|
||||
}
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( m_lockMap[ev.id], lev );
|
||||
}
|
||||
|
||||
void View::ProcessLockRelease( const QueueLockRelease& ev )
|
||||
@ -550,17 +518,8 @@ void View::ProcessLockRelease( const QueueLockRelease& ev )
|
||||
lev->thread = ev.thread;
|
||||
lev->type = LockEvent::Type::Release;
|
||||
|
||||
auto it = m_lockMap.find( ev.id );
|
||||
if( it == m_lockMap.end() )
|
||||
{
|
||||
auto& v = m_pendingLocks[ev.id];
|
||||
v.push_back( lev );
|
||||
}
|
||||
else
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( it->second, lev );
|
||||
}
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
InsertLockEvent( m_lockMap[ev.id], lev );
|
||||
}
|
||||
|
||||
void View::ProcessLockMark( const QueueLockMark& ev )
|
||||
|
@ -149,7 +149,6 @@ private:
|
||||
std::unordered_set<uint64_t> m_pendingSourceLocation;
|
||||
std::unordered_map<uint64_t, Event*> m_pendingCustomStrings;
|
||||
std::unordered_map<uint64_t, uint32_t> m_threadMap;
|
||||
std::unordered_map<uint64_t, std::vector<LockEvent*>> m_pendingLocks;
|
||||
|
||||
Slab<EventSize*1024*1024> m_slab;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user