1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Threads may be mapped to fibers.

This commit is contained in:
Bartosz Taudul
2021-11-02 01:51:54 +01:00
parent 0718330016
commit d522af99b9
2 changed files with 38 additions and 12 deletions
+36 -12
View File
@@ -3558,31 +3558,55 @@ void Worker::InsertMessageData( MessageData* msg )
ThreadData* Worker::NoticeThreadReal( uint64_t thread )
{
auto it = m_threadMap.find( thread );
if( it != m_threadMap.end() )
auto fit = m_data.threadToFiberMap.find( thread );
if( fit == m_data.threadToFiberMap.end() )
{
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
auto it = m_threadMap.find( thread );
if( it != m_threadMap.end() )
{
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
}
else
{
return NewThread( thread, false );
}
}
else
{
return NewThread( thread, false );
auto it = m_threadMap.find( fit->second );
assert( it != m_threadMap.end() );
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
}
}
ThreadData* Worker::RetrieveThreadReal( uint64_t thread )
{
auto it = m_threadMap.find( thread );
if( it != m_threadMap.end() )
auto fit = m_data.threadToFiberMap.find( thread );
if( fit == m_data.threadToFiberMap.end() )
{
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
auto it = m_threadMap.find( thread );
if( it != m_threadMap.end() )
{
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
}
else
{
return nullptr;
}
}
else
{
return nullptr;
auto it = m_threadMap.find( fit->second );
assert( it != m_threadMap.end() );
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
}
}