Logiranje iz pomozne niti (service) v glavno nit

Vse drugo, kar ne spada v nobeno zgornjo kategorijo.
Odgovori
ac
Prispevkov: 415
Pridružen: 12.09.2002 13:01:38

Logiranje iz pomozne niti (service) v glavno nit

Odgovor Napisal/-a ac » 04.02.2010 10:22:42

Trenutno imam glavni program, ki uporablja moje dllje (neke service), ki tečejo vsak v svojem threadu. Zdaj bi pa rad nek globalni log in bi rad polnil npr nek memory table(fifo), ki ga bom nato uporabljal, torej bral in brisal zadnje zapise. Ena varianta bi bila prek messageov, vendar pa bo to konzolna aplikacija oz service. Bi pa rad zagotovil, da je pošiljanje iz niti, čim manj časovno potratno, da ne bi slučajno kaj blokiralo servica.
Kakšen hint?

lp, anze
Zadnjič spremenil ac, dne 04.02.2010 10:27:32, skupaj popravljeno 1 krat.

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

Logiranje iz pomozne niti (service) v glavno nit

Odgovor Napisal/-a Runner » 04.02.2010 12:03:50

Ena varianta je da vsi uporabljajo PostMessage. Koda ki posluša, torej logira mora bit sposobna tak message sprejeti. Ker je to PostMessage je fire and forget in si gotov da ne boš nič blokiral. Moraš pa seveda vedeti handle okna kamor boš pošiljal.

Druga varianta je da uporabiš moj IPC. Temelji na named pipes in je zelo hiter. Približno 0.1 ms za tipičen message + odgovor. Če boš na strani sprejemnika delal kaj daljšega potem lahko sporočilo samo sprejmeš potem pa naprimer štartaš svoj task v ozadju in takoj vrneš rezultat nazaj pošiljatelju. Drugače je IPC server multithreaded z vgrajenim thread pool-om. Dobiš ga na:

http://www.cromis.net/blog/downloads/cromis-ipc/

Celotna zadeva je zelo preprosta za uporabo (poglej demo) in ima že vgrajeno multi-client server arhitekturo. Podpira tudi pošiljanje različnih tipov podatkov, tudi kompleksnih (streami naprimer). Med downloads imaš tudi preprost thread pool za izvajanje asinhronih taskov.
Zadnjič spremenil Runner, dne 04.02.2010 12:06:52, skupaj popravljeno 1 krat.

ac
Prispevkov: 415
Pridružen: 12.09.2002 13:01:38

Logiranje iz pomozne niti (service) v glavno nit

Odgovor Napisal/-a ac » 04.02.2010 12:06:50

Hvala!

Jah, prek messageov ne gre, ker je to konzolna aplikacija in nima handla, ali so motim?
Drugo bom pa pogledal.


lp, anze
Zadnjič spremenil ac, dne 04.02.2010 12:07:53, skupaj popravljeno 1 krat.

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

Logiranje iz pomozne niti (service) v glavno nit

Odgovor Napisal/-a Runner » 04.02.2010 12:17:02

Verjetno se da tako da kreiraš svoje okno in prilepiš svoj message pump nanj. Vprašanje pa je če se splača komplicirati.

Odgovori