
10-11-2008
|
|
Forum Robot Girl
|
|
|
Join Date: Sep 2000
Posts: 22.246
|
|
|
Meer op semantiek en race conditions
2008-10-11T09: 01:00.011 +02:00
In eerdere posting Ik heb gesteld de volgende sceanario:
Gelet op de eenvoudige toepassing hieronder weergegeven:
- Er is een gebeurtenis bron (dus geen klok synchronisatie problemen) die genereert gebeurtenissen van drie soorten E1, E2, E3.
- Laten we ook zeggen dat in ons verhaal is er een enkele gebeurtenissen van elk type dat is verschenen (dus geen synoniemen kwesties), de tabel toont hun vóórkomen tijd (als ze zich in werkelijkheid) en opsporing tijd (als ze zijn gerapporteerd aan het systeem ) - elk van hen is gemeld 1 keer eenheid na het ontstaan ervan, niet opnieuw bestellen probleem.
- Evenementen E1, E2 dienen als input voor een EPA-van het type "patroon opsporing", die detecteert een temporele sequentie patroon "e1 voordat e2", en wanneer dit wordt geconstateerd, zij behaalt een evenement e4 - enkele functie van de E1 en E2.
- Evenementen e3 (ruwe geval) en e4 (afgeleid geval) dienen als input voor een ander EPA van het type "patroon opsporing", die opnieuw detecteert een temporele sequenties patroon "e3 voordat e4", indien dit patroon wordt gedetecteerd - Afspraak maken E5 die triggers enige actie bij de consument.
Ik heb ook gevraagd de vraag is - gezien het bovenstaande - zal de actie op gang gebracht door e5 optreden?, Dus zal het patroon - "e3 voordat e4" worden beoordeeld op true?
Ik heb een paar antwoorden op deze en je kunt lezen als commentaar op de originele posting; zoals beloofd ben ik wijdt deze postings de analyse van deze eenvoudige zaak:
Het eerste ding om te bespreken is de semantiek van "temporele sequentie". Er zijn twee mogelijke soorten semantiek voor temporele sequentie, die ik bel "opsporing tijd semantiek" en "voorval tijd semantiek".
- De detectie tijd semantiek wordt uitgevoerd in verschillende talen en betekent dat de temporele volgorde is de volgorde van de tijd-stempels die het "geval verwerking platform" detecteert dat deze gebeurtenis plaatsvindt, indien er sprake is van een enkele draad van deze detectie, dan de gebeurtenissen volledig besteld, anders kunnen er meerdere gebeurtenissen met dezelfde "opsporing timestamp".
- Het voorval tijd semantiek eveneens uitgevoerd in verschillende talen betekent dat de temporele volgorde is de volgorde van de tijd-stempels die worden verstrekt als onderdeel van het evenement, en wijzen - bij dit evenement er gebeurde in de werkelijkheid. Er zijn enkele complexiteit van synchronisatie van de tijd in multi-producent milieu, maar in dit voorbeeld nemen we aan een enkele producent (Ik schrijf over multi-producent gevallen in een andere posting).
- Merk op dat deze twee Om relaties mogen niet identiek zijn.
- Er is ook soort hybride oplossing ( "totale bestelling semantiek") - de semantiek is echt "opsporing tijd" semantiek, maar om de gebeurtenissen die komen een beetje laat om hun eigen rol, de gebeurtenissen zijn queued in een buffer (en niet als gedetecteerd) tot time-out te laten "out of order" evenementen aan te komen en opnieuw teneinde de buffer, en vervolgens stuurt de gebeurtenissen volgens de buffer bestelling.
Hoe komt u terug naar het voorbeeld - in de kleine tabel op de linker kant van de figuur hierboven, zijn er ontstaan en detectie tijden van E1, E2, E3. Voor e4 er slechts detectie tijd - e4 verschilt van (E1, E2, E3) door het feit dat het een afgeleide gebeurtenis en niet ruwe evenement net als de andere drie. De vraag is "wat is het vóórkomen van een afgeleid evenement"? - Er is geen duidelijk antwoord is - er zijn meerdere antwoorden mogelijk:
- In de afgeleide gebeurtenis geval het voorval tijd \u003d detectie tijd, omdat dit evenement is geen echte gebeurtenis, maar een virtueel zijn, aldus de bron is het EPA dat schept, en dat gebeurde toen gemaakt. In ons geval betekent dit dat occurence-tijd (e4) \u003d 4.
- Het voorval is het voorval tijd van de laatste evenement afgesloten dat het patroon - sinds de deelnemende evenementen in de oprichting van zijn e4 (E1, E2) en e2 was de laatste die het patroon voltooid, gebeurtenis-tijd (e4) \u003d gebeurtenis - tijd (e2) \u003d 2
- Interval semantiek: Het evenement e4 optreedt in het interval waarin alle deelnemers zich voordoen, wat is dit geval betekent gebeurtenis-tijd (e4) \u003d [1, 2].
Het verschijnsel van meervoudige semantische interpretaties van toepassing op verschillende andere semantische besluiten in de semantische verwerking van het evenement taal, en de gewenste oplossing is om de gebruiker met semantische "fine tuning"-beleid, waarbij de gebruiker kan kiezen het gewenste semantiek, in plaats van " harde code "een bepaalde semantiek (met behulp van de meest voorkomende een als standaard), is dit een van de voordelen van het gebruik van COTS geval voor verwerking, want het is heel moeilijk om na te denken over deze kwesties bij de ontwikkeling van het EP manuaully met conventionele taal.
De semantiek van het tweede "temporele sequentie" (E3, E4) is dus:
- Volgens "opsporing tijd" semantiek - beiden hebben detectie-tijd van 4. Als zodanig is het volgnummer voorwaarde niet is voldaan. Maar als we het opleggen van de totale bestelling door een enkele draad, dit kan leiden tot "race conditions" tussen de twee gebeurtenissen. In dit geval is het aanbevolen gebruik te maken van een consistent beleid prioriteit - hetzij breedte eerste (het ruwe geval komt altijd op de eerste) of diepte eerste (de afgeleide evenement vindt altijd op de eerste plaats) om ervoor te zorgen deterministische resultaat.
- Volgens de "voorval tijd" - het hangt af van het beleid gekozen, maar volgens alle interprerations - e4 plaatsvindt vóór e3 - aldus de temporele sequentie niet is voldaan.
Bottome lijn: de temporele sequentie (E3, E4) is voldaan indien:
- De temporele semantiek is detectie tijd
- Het is uitgevoerd door de totale bestelling
- De totale bestelling is "breedte eerst" - namelijk prioriteit voor de ruwe evenementen.
In alle andere gevallen is de temporele sequentie zal niet tevreden zijn en de logische actie niet uitvoeren.
Bron ...
|