время работы потока

Тема в разделе "WASM.BEGINNERS", создана пользователем Dukales, 8 янв 2010.

  1. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    (WinAPI)
    Подскажите как измерить процессорное время работы потоков в одном процессе.
    Дан один процесс из двух потоков с одинаковыми приоритетами. В одном — окно с графикой, в другом — математика. Окно обновляется по PostMessage из вычисляющего потока, но на перерисовку иногда тратится слишком много времени. Хотелось бы адаптивно подстраивать период обновления окна. А для этого нужно соотнести процессорные времена потоков за произвольный отрезок времени времени.
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Код (Text):
    1. typedef struct THREAD_INFO {
    2.  NT_FILETIME ftKernelTime;
    3.  NT_FILETIME ftUserTime;
    4.  NT_FILETIME ftCreateTime;
    5.  long dwWaitTime;
    6.  long dwStartAddress;
    7.  CLIENT_ID CID;
    8.  long dwCurrentPriority;
    9.  long dwBasePriority;
    10.  long dwContextSwitches;
    11.  long dwThreadState;
    12.  long dwThreadWaitReason;
    13. } THREAD_INFO;
    нэ?
     
  3. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
  4. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    спасибо. просто мои ключевые слова не сканали — началась паника. спасибо
     
  5. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    THREAD_INFO
    куда она спряталась?
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Dukales
    через ZwQuerySystemInformation (SystemProcessesAndThreadsInformation)
    получаем список SYSTEM_PROCESS_INFORMATION
    для каждого процесса определена и THREAD_INFO.
    хотя для своего процесса лучше наверное либо GetThreadTimes (просто дать хендл треда, полученный после CreateThread и получить желаемые данные) либо ZwQueryInformationThread (ThreadTimes).
    Почитай Неббета, там есть описания структур и функций (Native)
     
  7. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    RamMerLabs
    спасибо. похоже мне хватит GetThreadTimes