|
Mais sobre a semântica e raça condições
2008-10-11T09: 01:00.011 +02:00
Na postagem anterior Tenho colocado sceanario o seguinte:
Dada a aplicação simples mostrado abaixo:
- Não existe um único evento fonte (de forma que nenhum relógio sincronização questões), que gera três tipos de eventos E1, E2, E3.
- Vamos dizer também que, na nossa história, há um único acontecimentos de cada tipo, que é publicado (de forma não sinónimos questões), a tabela mostra a sua ocorrência tempo (quando ocorreram na realidade) e detecção do tempo (quando tiverem sido notificados para o sistema ) - cada uma delas tem sido relatada unidade 1 hora após a sua ocorrência, não re-ordenação problema.
- Eventos E1, E2, servir como uma entrada para um APE do tipo "padrão detecção", que detecta uma seqüência temporal padrão "e1 antes e2", e quando este é detectado, um evento que decorre e4 - algumas funções de E1 e E2.
- Eventos e3 (matérias-evento) e e4 (derivado evento) servir como entrada para outro APE do tipo "padrão detecção", que detecta um novo temporal seqüências padrão "e3 antes e4", se este padrão é detectado - e5 criar evento que desencadeia alguma ação no consumidor.
Também colocou a questão é que - tendo em conta a anterior - será a ação desencadeada pela e5 ocorrer?, Ou seja, será o padrão - "e3 antes e4" ser avaliada a verdade?
Tenho algumas respostas para isso e você pode lê-los como comentários ao texto inicial do destacamento, como prometido estou dedicando este destacamentos para análise deste caso simples:
A primeira coisa a discutir é a semântica de "seqüência temporal". Existem dois tipos possíveis de semântica para a seqüência temporal, o que eu chamaria de "detecção tempo semântica" e "ocorrência tempo semântica".
- A detecção tempo semântica é implementado em várias linguagens e meios que a ordem temporal é a ordem dos carimbos de tempo em que o "evento de transformação plataforma" detecta que este evento ocorre, se houver uma única discussão desses detecção e, em seguida, os eventos são totalmente ordenados, caso contrário, pode haver vários eventos com o mesmo "detecção timestamp".
- A ocorrência tempo semântica também implementado em várias línguas significa que a ordem temporal é a ordem do tempo de selos que são fornecidos como parte do evento informação, e designar - quando este evento happend em realidade. Existem alguns complexidade de sincronização de tempo em ambiente multi-produtor, no entanto, neste exemplo, assumir um único produtor (vou escrever sobre multi-produtor casos em outra postagem).
- Note-se que este fim duas relações não podem ser idênticas.
- Existe também tipo de solução híbrida ( "total ordem semântica") - a semântica é realmente "detecção tempo" semântica, mas de modo a permitir eventos que chegam um pouco tarde para ter seu próprio papel, os acontecimentos são enfileirados em um buffer (e não considerados como detectados) até à hora de saída para deixar "fora da ordem" eventos para chegar e voltar a pedir o buffer e, em seguida, enviar os eventos de acordo com o tampão ordem.
Voltando ao exemplo - na pequena mesa no canto inferior esquerdo do lado da figura acima, existem momentos de ocorrência e detecção E1, E2, E3. Para e4 há apenas detecção tempo - e4 é diferente de (E1, E2, E3) pelo facto de se tratar de um evento e não derivados crus evento como os outros três. A pergunta é: "qual é a ocorrência de um tempo derivado evento"? - Não existe uma resposta clara para ele - que existem várias respostas possíveis:
- No caso da ocorrência derivados evento tempo \u003d detecção tempo, uma vez que este evento não é um caso real, mas um virtual, assim, a sua fonte é a APE que ela cria, e isso ocorreu quando criada. No nosso caso, isso significa que occurence-time (e4) \u003d 4.
- Sua ocorrência é hora da ocorrência hora do último evento que completaram o padrão - uma vez que os participantes na criação de eventos são e4 (E1, E2) e E2 foi o último que completaram o padrão de ocorrência de tempo (e4) \u003d-ocorrência tempo (e2) \u003d 2
- Intervalo de semântica: e4 O evento ocorre no intervalo no qual todos os participantes, a qual é neste caso significa ocorrência de tempo (e4) \u003d [1, 2].
O fenômeno das múltiplas interpretações semântica se aplicam a várias outras decisões no semântica semântica da linguagem evento de transformação, bem como a solução preferida é a de fornecer ao usuário com semântica "afinar" as políticas, ao abrigo do qual o usuário pode escolher o desejado semântica, em vez de " rígido código "uma certa semântica (usando as mais comuns como um padrão), esta é uma das vantagens de utilizar COTS para evento de transformação, uma vez que é muito difícil pensar sobre essas questões no desenvolvimento do PE manuaully usando linguagem convencional.
A semântica do segundo "seqüência temporal" (E3, E4) é assim:
- Segundo a "detecção tempo" semântica - ambos têm detecção em tempo de 4. Como tal, a seqüência condição não for cumprida. No entanto, se impõem total fim por um único fio, que pode criar condições corrida entre os dois eventos. Neste caso é recomendado usar uma prioridade política - ou amplitude primeiro (o cru evento vem sempre em primeiro lugar) ou profundidade primeiro (derivado do evento vem sempre em primeiro lugar) para garantir resultado determinístico.
- Segundo a "ocorrência tempo" - que depende da política escolhida, mas de acordo com todas as interprerations - e4 ocorre antes e3 - assim, a seqüência temporal não é satisfeita.
Bottome linha: a seqüência temporal (E3, E4) é satisfeita se:
- O temporal semântica é detecção tempo
- Ele é implementado pelo total fim
- O valor total da ordem política é a "largura primeiro" - ou seja prioridade para os eventos em bruto.
Em todos os outros casos, a seqüência temporal não serão preenchidas e corolário da acção não será executada.
Fonte ...
|