Fråga : Tjänste- trått eller async

Hälsningar behov för

I råder lite i vilken bana av danandeprogramm som ska väljas. Jag frågade
about denna någon tid sedan, men nu jag har mer klar vision av denna. App är tjänste-, den väntan för användareinloggning och starter min annan app. Det också klockor som alltid gör mitt spring för app. Och ofcourse det gör detta per användaren som är inloggningen. Så, när användaren logeds på, och han kopplar till en annan användare, därefter som den nya användaren har nytt att anföra som exempel av programm, och föregående ha stilla hans app running.

So, mig har funktionsduglighet som lyssnar när användareinloggningen (ISensLogon). Jag vet inte är detta egentligen nödvändigt. Därför att jag kan alltid, klockan är processaa skötsel i några tidmellanrum vid funktionsduglighet för danande mutex.

Second är till klockan är processaa spring vid den danandemutex och väntan för den. (I framtid jag gör någon extra mekanism, lik IPC).

I måste lösningar:

1. asynkront -
I har gjort enkelt att klassificera för att hjälpa mig att behandla fönster som kernelen anmärker (händelsen, mutex). Med den jag kan tillfoga händelse, så klassificera kan väntan för den, och när händelseoccuren som den avfyrar, fungerar som bindeds till denna händelse i den inicializationen. min idé för

So är ”tillfogar” händelse den klocka för användareinloggning. Avfyrat fungera ”tillfogar” ny händelse den väntan för mutex, när händelsen uppstår. Och när denna händelse uppstår dess start process.

LogonEvent->SetCommand (AddMutexEventToEventListener);
EventListener->Add (LogonEvent);


2. trått - huvudsaklig tråd för

In, väntan för I enkelt för användareinloggning. Därefter när användareinloggningen mig gör den nya tråden som kör processaa och klockan för mutex.

I, ha stor lust att välja asynchmetod, därför att den verkar till mig för att vara ambitiös. Men den som var mest hård att kodifiera och kodifiera, ska är mest hård till funderare för underhåll i. Den trådda lösningen är hmm mer ren I think.

Could som någon ger mig adivse. Mig kanske omitt något som är viktig?

" klar "

Svar : Tjänste- trått eller async

Första mönstrar att du nämnde har faktiskt ett känt. Den har kallat ”reaktorn” mönstrar, som omformar ett valda/för väntan röstningen baserat skeende som övervakar in i drivande tillbakaringningar för händelsen (jag undrar, om det är varför dess kallade reaktor). Reaktorn (huvudsakliga delar) gör alla smutsar ner pollling jobb, och du kan enkelt berätta det att avfyra en händelse, när något händer. http://en.wikipedia.org/wiki/Reactor_pattern

Kommande baksida till ifrågasätta, som är viktigare som av är väl den, ser något liknande som du ska alwaysdbehov en arbetartråd, är det för reaktorn, eller det processaa övervakar tråden (om inte reaktorn är sig själv using händelsen drivande API). Om det är fallet, därefter som gynna av reaktorn är tydligare, om du har många många händelser till klockan samtidigt, den lika något att säga i ditt fall, om du måste att övervaka dussintals, bearbetar/mutexes, därefter en reaktor sparar dig, kosta av en tråd per övervakar.

Å ena sidan om dess rättvist en materia av en singelarbetartråd därefter varför tillfoga komplexitet, när du kan lätt klara av saker med en övervakatråd? Den är säker är ambitiös och fresta för att gå med sofistikerade designer (när speciellt du har ankommit på en dig); Jag kan förstå driften:), men vara besvärad den, pålitlighet, lindrar - av - bruk, och underhåll är viktigare än utsmyckad design. Efter alla din användare att bry sig inte whethers dess reaktor den baserade designen eller inte.

Jag föreslår att du postar specificerar vidare, speciellt med hänsyn till scalabity prospekterar. Gilla, hur många anmärker kan dig hålla ögonen på samtidigt (max), hur många bearbetar Etc.

Hoppas att hjälp…,

Andra lösningar  
 
programming4us programming4us