🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
4 messages
4 total messages Started by Grzegorz Skoczylas Fri, 22 Jul 2016 11:19
OmniThreadLibrary - lista aktywnych wątków
#345051
Author: Grzegorz Skoczylas
Date: Fri, 22 Jul 2016 11:19
12 lines
2028 bytes
Cześć!

Jest sobie stary, duży, mocno rozbudowany program, pisany przez wielu różnych programistów, mający w przeszłości różnych właścicieli. W tym programie w niektórych funkcjach używana jest biblioteka OmniThreadLibrary.

Potrzebuję uzyskać informację, jakie wątki działają w danym momencie, czyli potrzebowałbym albo listę aktualnie działających wątków, albo jakąś informację, że wątek rozpoczął/zakończył działanie. Szukam jakiegoś rozwiązania, które nie wymagałoby modyfikowania istniejącego kodu (np. jakieś globalne eventy, itp.).

Niestety nie mam praktycznie żadnego doświadczenia w używaniu tej biblioteki, a dokumentacja jest nieco skąpa. Oczywiście szukałem w Internecie, ale - jak dotąd - bez powodzenia.

Będę wdzięczny za wszelkie wskazówki. :-)

--
Grzegorz Skoczylas
Re: OmniThreadLibrary - lista aktywnych wątków
#345052
Author: mmm
Date: Fri, 22 Jul 2016 13:12
10 lines
1424 bytes
W dniu 2016-07-22 o 13:19, Grzegorz Skoczylas pisze:
> Potrzebuję uzyskać informację, jakie wątki działają w danym momencie, czyli potrzebowałbym albo listę aktualnie działających wątków, albo jakąś informację, że wątek rozpoczął/zakończył działanie. Szukam jakiegoś rozwiązania, które nie wymagałoby modyfikowania istniejącego kodu (np. jakieś globalne eventy, itp.).
>
> --
> Grzegorz Skoczylas
>
http://www.nirsoft.net/utils/process_threads_view.html
Nada się ?

M
Re: OmniThreadLibrary - lista aktywnych wątków
#345053
Author: Grzegorz Skoczylas
Date: Tue, 26 Jul 2016 06:51
16 lines
2465 bytes
W dniu piątek, 22 lipca 2016 15:12:58 UTC+2 użytkownik mmm napisał:

> http://www.nirsoft.net/utils/process_threads_view.html
> Nada się ?
> 

Niestety nie, ale to moja wina, bo nie byłem wystarczająco precyzyjny.

Potrzebuję w tym programie zaimplementować watch-doga -- funkcję uruchamianą cyklicznie (timerem), która będzie sprawdzać, czy jakiś wątek nie działa podejrzanie długo i raportować takie przypadki.

Jak pisałem, program był rozwijany przez kilkanaście lat, przez kilku właścicieli i wielu programistów. Część wątków bazuje na standardowym komponencie TThread. Dla tych wątków napisałem własną "czapę", w której w zmiennej klasowej przechowuję listę aktywnych wątków. W dotychczasowym kodzie tylko hurtem zamieniłem słowo TThread na moją klasę i to mam obsłużone.

Część wątków bazuje na Omni Thread Library. Nie mam prawie żadnego doświadczenia z tą bibliotekę. Aktualnie próbuję się zorientować, jak w tym przypadku monitorować aktywne wątki, przy jak najmniejszej ingerencji w dotychczasowy kod.

--
Grzegorz Skoczylas
Re: OmniThreadLibrary - lista aktywnych wątków
#345054
Author: arivald
Date: Tue, 26 Jul 2016 14:53
22 lines
1609 bytes
W dniu 2016-07-26 o 08:51, Grzegorz Skoczylas pisze:
> W dniu piątek, 22 lipca 2016 15:12:58 UTC+2 użytkownik mmm napisał:
>
>> http://www.nirsoft.net/utils/process_threads_view.html
>> Nada się ?
>>
>
> Niestety nie, ale to moja wina, bo nie byłem wystarczająco precyzyjny.
>

Olej biblioteki, i listę wątków pobierz od systemu.

Dopiero mając wątki ewentualnie dopasuj TThread (TThread.ThreadID) czy 
obiekt wątku z Omni (nie znam go, ale przebić się przez źródła to chyba 
nie problem?).

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

BTW można takiego watchdoga zaimplementować jako osobną aplikację.

-- 
Arivald
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads