|
Plus d'informations sur la sémantique et de conditions de course
2008-10-11T09: 01:00.011 +02:00
Dans l'affichage précédent J'ai posé sceanario le texte suivant:
Compte tenu de la simple application ci-dessous:
- Il ya une seule source d'événement (donc pas de problèmes de synchronisation d'horloge) qui génère des événements de trois types E1, E2, E3.
- Nous disons aussi que dans notre histoire il ya un seul des événements de chaque type qui est publié (donc pas de problèmes de synonymes), le tableau montre l'apparition du temps (quand ils se sont produits dans la réalité) et de détection de temps (quand ils ont été signalés dans le système ) - chacun d'eux a été signalé 1 unité de temps après son accident, ne re-commande de problème.
- Événements e1, e2 servir en tant que contribution à l'APE de type "schéma de détection" qui détecte une séquence temporelle pattern "e1 avant e2", et lorsque cela est détecté, il découle d'un événement e4 - une fonction de E1 et E2.
- Evénements e3 (matières cas) et e4 (dérivé cas) servir de contribution à un autre EPA de type "schéma de détection", qui détecte un nouveau modèle de séquences temporelles "e3 avant e4", si ce schéma est détecté - e5 créer un événement qui déclenche une action à la consommation.
J'ai également posé la question est - compte tenu de ce qui précède - que les actions déclenchées par e5 se produire?, C'est-à-dire le modèle - "e3 avant e4" être évaluée à la vraie?
J'ai eu un peu de réponses à la présente et vous pouvez les lire comme des commentaires à l'original détachement, comme promis, je suis affecté à consacrer cette analyse de ce cas simple:
La première chose à discuter est la sémantique de la «séquence temporelle". Il existe deux types possibles de la sémantique de la séquence temporelle, que j'appelle "temps de détection sémantique" et "temps événement sémantique".
- Le temps de détection sémantique est mis en œuvre dans plusieurs langues, et cela signifie que l'ordre temporel est à l'ordre du temps de timbres dans laquelle la "plate-forme de traitement événement" détecte que cet événement se produit, s'il existe un seul thread d'un tel dépistage, puis les événements sont totalement ordonné, sinon, il y mai, plusieurs événements avec la même "détection timestamp".
- L'événement du temps sémantique également mis en œuvre dans les différentes langues qui signifie que l'ordre temporel est à l'ordre du temps que les timbres sont fournis dans le cadre de l'information sur les événements, et de désigner - lorsque cet événement se passe dans la réalité. Il ya une certaine complexité de la synchronisation du temps dans l'environnement multi-producteurs, toutefois, dans cet exemple nous supposons que d'un seul producteur (Je vais écrire à propos de multi-producteur dans un autre cas, l'affichage).
- Notez que ces deux relations de mai afin de ne pas être identiques.
- Il ya aussi des solution hybride ( "total de la commande la sémantique") - la sémantique est vraiment temps de détection "sémantique, mais dans le but de permettre aux événements qui arrivent un peu tard pour prendre le rôle qui leur incombe, les événements sont en attente à un dépassement de mémoire tampon (et non pas considéré comme détecté) jusqu'à ce que de temps à laisser "de l'ordre des événements pour arriver et re-commander le tampon, puis d'envoyer les événements en fonction de la mémoire tampon ordre.
Pour en revenir à l'exemple - dans le petit tableau sur le bas côté gauche de la figure ci-dessus, il ya détection de présence et temps de E1, E2, E3. Pour e4, il n'est que temps de détection - e4 est différent de (E1, E2, E3) par le fait qu'il s'agit d'un événement et non pas dérivé brut événement comme les trois autres. La question est de savoir "quel est le moment de l'accident cas un dérivé»? - Il n'ya pas de réponse claire pour lui - il ya plusieurs réponses possibles:
- Dans le cas de cas provenant de la survenance time \u003d temps de détection, puisque cet événement n'est pas réel, mais un virtuel, donc, sa source est l'APE qui crée, et il s'est produit lors de sa création. Dans notre cas, cela signifie que occurence temps (e4) \u003d 4.
- Son apparition est l'événement le temps de la dernière épreuve qui a procédé à la configuration - depuis les événements qui participent à la création de e4 sont (e1, e2) et e2 est le dernier qui a complété le modèle, la présence à temps (e4) \u003d événement - temps (e2) \u003d 2
- Intervalle sémantique: e4 L'événement se produit dans l'intervalle dans lequel tous les participants se produire, ce qui est de ce cas signifie accident temps (e4) \u003d [1, 2].
Le phénomène de multiples interprétations sémantiques s'appliquent à d'autres décisions de sémantique dans le cas de traitement sémantique de la langue, et la meilleure solution est de fournir à l'utilisateur sémantique "fine tuning" politiques, en vertu de laquelle l'utilisateur peut choisir les sémantique, au lieu de " dur code "d'une certaine sémantique (utilisation la plus courante par défaut), ce qui est l'un des avantages de l'utilisation de COTS pour l'activité de traitement, car il est très difficile de réfléchir à ces questions lors du développement du PE manuaully au moyen de la langue.
La sémantique de la deuxième séquence temporelle "(e3, e4) est donc:
- Selon les "temps de détection" sémantique - tous deux ont la détection en temps de 4. En tant que telle la séquence condition n'est pas remplie. Toutefois, si nous imposons total de la commande par un seul fil, ce mai de créer les conditions de course entre les deux événements. Dans ce cas, il est recommandé d'utiliser une priorité politique - soit la largeur première (le brut événement vient toujours en premier) ou de la profondeur en premier (dérivé événement vient toujours en premier) de veiller à ce résultat déterministe.
- Selon le "temps événement" - cela dépend de la politique choisie, mais selon tous les interprerations - e4 survient avant e3 - donc la séquence temporelle n'est pas satisfaite.
Bottome ligne: la séquence temporelle (e3, e4) est satisfaite si:
- La sémantique temporelle est temps de détection
- Elle est mise en œuvre totale de la commande par
- Le total de la commande est «largeur d'abord» - à savoir la priorité pour le brut événements.
Dans tous les autres cas, la séquence temporelle ne sera pas satisfait et le corollaire de ne pas exécuter l'action.
Source ...
|