Перехват в своей программе блокировки потоков/усыпания

Тема в разделе "WASM.BEGINNERS", создана пользователем XshStasX, 14 ноя 2009.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Есть ли быстрые способы перехвата в своей программе усыпания/пробуждения потоков?
    Кроме того как перехватывать WaitForSingleObject,ResumeThread и тп...
    При этом приложение много поточное...и этот перехват не должен влиять на роботу программы, перехват нужен токо для ведения статистики.
     
  2. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    А зачем тебе что то перехватывать ? Пусть каждый поток сам распечатывает кто он и в какой момент времени он пытается что то сделать и если все потоки будут проходить один и тот же код разницы во времени возникать не должно.
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    можна конечно и так сделать...но хотелось бы сделать библиотечку которую подключаешь к проекту а та тебе статистику...полезно для отладки...
     
  4. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    Ну так сделай:)
    Пусть она например во время своей инициализации (или через экспортируемую функцию) подменяет адрес нужной тебе апи в таблице экспорта, делает буфер в памяти, а процедура фильтр скидывает туда пару тройку значений (например инфу о потоке на прямую из TIB) а адрес для записи я бы доставал так :
    eax = размер структуры
    lock xadd [общая переменная],eax
    eax = указатель на структуру
    а потом выводил эти значения другим потоком внутри dll скажем в консоль, или скидывал в файл во время выхода из dll.
    По моему сердито и быстро до некуда :) Реализация того что тебе нужно зависит только от фантазии и потребностей.
    Короче легких путей не будет, а если они и есть то тяжелый путь полезней и интересней

    PS:если напишешь выложи исходничек вдруг кому пригодится:)
     
  5. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    в вопщем я так и думал)
    просто думал что есть способ получше, так как у потока токо два основных состояния
    рабочий/спящий ... тоесть можна былоб предположыть что есть какието общие функ. которые просыпают/усыпают поток
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Просыпают :) Будят
    Усыпают также двусмысленно, как и засыпают. Усыпляют хоть и не кошерно, но грамотнее.