Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Количество потоков процесса


Автор: lv151 8.11.2011, 12:37
Возможно ли средствами api узнать кол-во потоков принадлежащих процессу?
Или из самого потока его номер(очерёдность создания)?

Автор: Alca 8.11.2011, 12:52
Цитата

кол-во потоков принадлежащих процессу?

http://forum.sources.ru/index.php?showtopic=163915&hl=
http://blogs.msdn.com/b/oldnewthing/archive/2006/02/23/537856.aspx

Цитата

Или из самого потока его номер(очерёдность создания)?

Такого апи не существует, делай вручную.

Автор: 12usver12 8.11.2011, 13:26
Код

BOOL ListProcessThreads( DWORD dwOwnerPID ) 
{ 
  HANDLE hThreadSnap = INVALID_HANDLE_VALUE; 
  THREADENTRY32 te32; 
 
  // Take a snapshot of all running threads  
  hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); 
  if( hThreadSnap == INVALID_HANDLE_VALUE ) 
    return( FALSE ); 
 
  // Fill in the size of the structure before using it. 
  te32.dwSize = sizeof(THREADENTRY32); 
 
  // Retrieve information about the first thread,
  // and exit if unsuccessful
  if( !Thread32First( hThreadSnap, &te32 ) ) 
  {
    printError( TEXT("Thread32First") ); // show cause of failure
    CloseHandle( hThreadSnap );          // clean the snapshot object
    return( FALSE );
  }

  // Now walk the thread list of the system,
  // and display information about each thread
  // associated with the specified process
  do 
  { 
    if( te32.th32OwnerProcessID == dwOwnerPID )
    {
      _tprintf( TEXT("\n\n     THREAD ID      = 0x%08X"), te32.th32ThreadID ); 
      _tprintf( TEXT("\n     Base priority  = %d"), te32.tpBasePri ); 
      _tprintf( TEXT("\n     Delta priority = %d"), te32.tpDeltaPri ); 
      _tprintf( TEXT("\n"));
    }
  } while( Thread32Next(hThreadSnap, &te32 ) ); 

  CloseHandle( hThreadSnap );
  return( TRUE );
}

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701(v=vs.85).aspx

Автор: azesmcar 8.11.2011, 13:43
Цитата(lv151 @  8.11.2011,  12:37 Найти цитируемый пост)
Или из самого потока его номер(очерёдность создания)? 

передавай номер в функцию потока при создании если нужен порядковый номер, если нужно просто идентифицировать - то используй ID потока.

Автор: lv151 8.11.2011, 14:32
thx.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)